MATLAB从结构数组中映射初始化

时间:2012-05-25 16:41:17

标签: matlab data-structures map initialization

我的目标是初始化一个Map对象,其中包含键的双精度值和值的结构。

我有一个与此类似的结构数组:

s(1) = [1,2,3];
s(1) = 'str';
s(2) = [4,5,6];
s(2) = 'str2';
s(3) = [7,8,9];
s(3) = 'str3';

然后我想创建一个地图对象,如:

awesome = container.Map(1:3, s);

但我收到以下错误:

Error using containers.Map
Specified value type does not match the type expected for
this container.

但是如果我这样做的话会有效:

awesome = container.Map(1:3, {s1, s2, s3});

为什么会发生这种情况,如何在将结构保持为值类型的同时使其工作?

1 个答案:

答案 0 :(得分:0)

假设您的结构设置代码类似于:

s(1).Numbers = [1,2,3];
s(1).String = 'str';
s(2).Numbers = [4,5,6];
s(2).String = 'str2';
s(3).Numbers = [7,8,9];
s(3).String = 'str3';

你可以用结构数组制作一个地图:

theMap = containers.Map( 1:3, arrayfun(@(x) ({x}), s))