我有一个名为SpreadFinder的函数,它返回一个结构数组:
[ spreads ] = SpreadFinder( pp, corr_thres, i_range )
返回对象如下所示:
spreads =
1x4026 struct array with fields:
px
tuple
beta
代码是:
m = containers.Map(0, 0, 'uniformValues',false); m.remove(0);
parfor col = 1:8
spreads = SpreadFinder(pp, 0.8, i_ranges(:,col)');
m(col) = spreads;
end
当我运行它时,我有这个错误:
Subscripted assignment dimension mismatch.
我知道Map可用于存储结构数组。 (https://stackoverflow.com/a/2365526)
以下代码有效。所以我认为这不是维度问题......
m(1) = spreads(1:2);
m(2) = spreads(1:4);
目标是将所有结果合并到一个地图中,并可能在并行任务之后迭代此地图。
有人能帮助我吗?
最佳,
答案 0 :(得分:1)
IIRC,您无法在containers.Map
内分配parfor
,因为containers.Map
不是sliceable。如果要将元素分配给parfor
内的数组,则必须是可切片的。我的意思是可切片的是你能够通过colon
运算符(即1:3
,2:4
)等提取值的子集。你不能用{{{{}}来做到这一点。 1}}除非您专门使用containers.Map
函数,否则您可以指定键的单元格数组并从中获取值。使用values
语法只允许您一次访问一个键。
因此,我建议您将输出分配给单元格数组,并将此单元格数组用作()
中的值。像这样:
containers.Map