Arrays 单个索引的二维数组索引之和
我试图在MATLAB中创建一个并行for循环,以填充Arrays 单个索引的二维数组索引之和,arrays,matlab,parfor,Arrays,Matlab,Parfor,我试图在MATLAB中创建一个并行for循环,以填充mxm矩阵,如下所示: parfor i = 1 : m^2 A(i) = sum( x .^ %Sum of indices% ); end 如果我在没有parfor的情况下做这件事,我只会做: for i = 1 : m for j = 1 : m A(i,j) = sum( x.^(i+j) ); end end 然而不幸的是,parfor不允许在它的主体中使用其他索引,因此我不能做我
m
xm
矩阵,如下所示:
parfor i = 1 : m^2
A(i) = sum( x .^ %Sum of indices% );
end
如果我在没有parfor的情况下做这件事,我只会做:
for i = 1 : m
for j = 1 : m
A(i,j) = sum( x.^(i+j) );
end
end
然而不幸的是,parfor
不允许在它的主体中使用其他索引,因此我不能做我想做的事情
我曾尝试使用ceil(I/3)+mod(I,3)
来提取索引的总和,但是这不起作用,因为在I=3
时,它给了我1
而不是我想要的4
有谁有更好的方法来提取索引的总和吗?这里是另一个向量化变量:
[I,J]=ndgrid(1:m);
K=I+J;
A=zeros(m);
parfor i=1:m^2
A(i)=sum(x.^(K(i)));
end
[I,J] = ndgrid(1:m, 1:m);
K = I + J;
A = reshape(sum(bsxfun(@power, x, K(:).')), [m m]);
在您的示例中,
x
是什么?您还可以提供“A”的示例。@Marcinx
是一个自变量数组,我需要从中计算A
的元素,这是多项式最小二乘拟合所需的联立方程的系数矩阵。我怀疑Aparfor
是否会加快速度,事实上,我担心这会使速度变慢。。你最好用矢量化的方式重写它。
[I,J] = ndgrid(1:m, 1:m);
K = I + J;
A = reshape(sum(bsxfun(@power, x, K(:).')), [m m]);