【发布时间】:2015-08-05 02:18:22
【问题描述】:
我似乎无法弄清楚containers.Map 的工作原理。它可以处理字符和数字,但是当我尝试为其提供数组时会翻转。我该如何制作这样的东西?
function test
global a
a = containers.Map();
a(pi) = 3:14;
a(5) = 4:2:10;
end
【问题讨论】:
标签: arrays matlab dictionary mapping containers
我似乎无法弄清楚containers.Map 的工作原理。它可以处理字符和数字,但是当我尝试为其提供数组时会翻转。我该如何制作这样的东西?
function test
global a
a = containers.Map();
a(pi) = 3:14;
a(5) = 4:2:10;
end
【问题讨论】:
标签: arrays matlab dictionary mapping containers
问题是您使用containers.Map 类的默认构造函数。来自帮助:
myMap = containers.Map() 创建一个空对象 myMap,它是一个
MATLAB containers.Map 类的实例。 myMap 的属性
是 Count(设置为 0)、KeyType(设置为 'char')和 ValueType(设置为
'任何')。
换句话说,你只能在这种形式中使用字符串作为键。如果要使用任意双精度值作为键,则需要在构造函数中指定'KeyType' 和'ValueType':
myMap = containers.Map('KeyType', kType, 'ValueType', vType) 构造
一个没有数据的 Map 对象,它使用 kType 键类型和一个值
vType 的类型。 kType 的有效值是字符串:'char',
'双','单','int32','uint32','int64','uint64'。有效值
vType 是字符串:'char', 'double', 'single', 'int8', 'uint8',
“int16”、“uint16”、“int32”、“uint32”、“int64”、“uint64”、“逻辑”或
'任何'。键类型和值类型参数的顺序不是
重要,但必须同时提供。
在你的例子中:
a = containers.Map('KeyType','double','ValueType','any');
a(pi) = 3:14;
a(5) = 4:2:10;
但是请注意,'double' 中的 'ValueType' 不适用于非标量值。或者,您可以通过构造函数直接使用cell arrays 指定您的键和值,并让它完成确定要使用的类型的工作:
a = containers.Map({pi,5},{3:14 4:2:10});
【讨论】:
将数组、单元格甚至其他地图放入地图中没有问题。问题是您的关键领域。据我所知,地图使用字符串作为键。所以你当前的代码不起作用,但这会
function test
global a
a = containers.Map();
a('pi') = 3:14;
a('5') = 4:2:10;
end
【讨论】: