【发布时间】:2014-11-27 19:49:05
【问题描述】:
我最近在我之前问过的question 中学习了如何对“简单”嵌套循环进行矢量化。但是,现在我也在尝试对以下循环进行矢量化
A=rand(80,80,10,6,8,8);
I=rand(size(A1,3),1);
C=rand(size(A1,4),1);
B=rand(size(A1,5),1);
for i=1:numel(I)
for v=1:numel(C)
for j=1:numel(B)
for k=1:j
A(:,:,i,v,j,k)= A(:,:,i,v,j,k)*I(i)*C(v)*B(j)*((k-1>0)+1);
end
end
end
end
所以现在k 依赖于j...到目前为止我尝试了什么:
j 和 k 术语的组合(即B(j)*((k-1>0)+1) 给出了一个我设法独立矢量化的三角矩阵:
B2=tril([ones(8,1)*B']');
B2(2:end,2:end)=2*B2(2:end,2:end);
但这给了我正确的 (j,k) 矩阵,而不是使用它来向量化剩余循环的方法。也许我也走错了路……那么我怎样才能矢量化这种类型的循环呢?
【问题讨论】:
标签: matlab for-loop vectorization multidimensional-array