在MATLAB中使用parfor对数组进行间接索引



为了运行时的好处,我目前正在尝试并行化我的脚本。

我的代码包括一个片段,当以非常抽象的方式表示时,它具有以下形式:

x=zeros(5,1);
y{1}=[1; 3; 5];
y{2}=[2; 4];
parfor i=1:2
x(y{i})= func(y{i});
end

因此,我希望不是按顺序填充变量x的索引,而是以并行的方式填充。然而,这给了我以下错误:

The variable x in a parfor cannot be classified.

要分配的索引总是不相交的(例如示例[1; 3; 5][2; 4](,即在并行运行期间不会发生条目的重写,否则会危害非顺序处理。

是否有其他方法可以重新表述此功能?

我会使用structs,因为输出大小正在变化。

x=zeros(5,1);
y{1}=[1; 3; 5];
y{2}=[2; 4];
parfor i=1:2
temp{i}= sin(y{i});
end
for i=1:2
x(y{i})=temp{i};
end

相关内容

  • 没有找到相关文章

最新更新