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];