MATLAB: расширение списка значений в контейнере.Объект карты
Я читал документацию по использованию контейнера Matlab.Карта для создания чего-то похожего на словарь Python, но я столкнулся с некоторыми проблемами и надеялся, что кто-то может пролить свет.
есть ли способ расширить содержимое списка значений, сопоставленного с определенным ключом? например, скажем, для карты "карта", ключ" 1234 "у меня есть значение"1.0".
map(1234) = 1.0
Я хотел бы расширить список значений до [1.0 2.0], и то, как я пытаюсь это сделать это
map = containers.Map(1234,1.0)
map(1234) = [map(1234) 2.0]
но я получаю сообщение об ошибке " ошибка с использованием контейнеров.Map / subsasgn. Указанный тип значения не соответствует типу, ожидаемому для данного контейнера."
могу ли я не связывать массивы как значения с ключом карты?
большое спасибо!
1 ответов
Нескалярные массивы поддерживаются нормально, если ValueType является "any". Похоже, проблема не в технике, которую вы используете для расширения, а в типе ключа или значения.
когда вы используете конструктор, который принимает ключ и значение, он выводит ключ и тип значения из переданных значений. Если значение является скалярным double, оно выводит тип "double". Это не поддерживает нескалярные массивы.
>> map = containers.Map(1234, 1.0);
>> disp(map.ValueType)
double
стандартные контейнеры.Конструктор карты будет иметь KeyType 'char' и ValueType 'любой'. Это будет иметь расширяющееся поведение, которое вы хотите, но вместо этого вам придется использовать ключи char. Используйте форму конструктора, чтобы явно установить типы ключей и значений "double" и "any", и он будет работать так, как вы хотите.
map = containers.Map('KeyType','double', 'ValueType','any');
map(1234) = 1.0;
map(1234) = [map(1234) 2.0];