【发布时间】:2018-07-12 07:20:39
【问题描述】:
只是从并行的东西开始......
我有一个代码可以归结为用可变长度数组填充矩阵A(预分配NaNs)的列:
A = nan(100);
for ii=1:100
hmy = randi([1,100]); %lenght of the array
A(1:hmy,ii) = rand(hmy,1); %array
end
只需将for 转换为parfor 甚至都不会运行
parfor ii=1:100
hmy = randi([1,100]); %how many not NaN values to put in
A(1:hmy,ii) = rand(hmy,1);
end
因为 parfor 不喜欢索引:
MATLAB 通过划分循环迭代在 parfor 函数中运行循环 分组,然后将它们发送给它们运行的 MATLAB 工作人员 平行线。为了让 MATLAB 以可重复、可靠的方式执行此操作,它 必须能够对循环中使用的所有变量进行分类。编码 以不兼容的方式使用指示的变量 分类。
我认为这是由于第一个维度上的索引并尝试了一种不起作用的解决方法(与以前相同的错误消息):
parfor ii=1:100
hmy = randi([1,100]);
tmp = [rand(hmy,1); NaN(size(A,1)-hmy,1)];
A(:,ii) = tmp;
end
如何索引A 以存储数组?
【问题讨论】:
标签: matlab parallel-processing parfor