-1

我正在尝试在 MATLAB 中创建一个并行循环来填充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的是,它的体内不允许有其他索引,因此我不能做我想做的事。

我尝试通过使用来提取索引的总和,ceil(i/3) + mod(i,3)但这不起作用,因为i=3它给了我1而不是4我想要的。

有没有人有更好的方法来提取索引的总和?

4

3 回答 3

1
   r=sum(  bsxfun(@power, x(:), m+1:2*m  ) ,1);
   c=sum(  bsxfun(@power, x(:), m+1:-1:2 ) ,1);

   A=fliplr(toeplitz(c,r));
于 2014-01-20T02:49:58.013 回答
0

这是另一个矢量化变体:

[I,J] = ndgrid(1:m, 1:m);
K = I + J;
A = reshape(sum(bsxfun(@power, x, K(:).')), [m m]);
于 2014-01-21T13:28:14.087 回答
0
  [I,J]=ndgrid(1:m);
  K=I+J;

  A=zeros(m);

  parfor i=1:m^2

   A(i)=sum(x.^(K(i)));

  end
于 2014-01-20T02:45:34.177 回答