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

时间:2018-11-02 17:54:44

标签: matlab parallel-processing 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]),即在并行运行期间不会发生条目覆盖,否则会危及非顺序处理

也许还有另一种方法可以重新构造此功能?

1 个答案:

答案 0 :(得分:1)

由于输出大小正在变化,因此我将使用结构。

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