我有一个关于循环依赖向量化的复杂问题,我想从你那里得到一些帮助。
让我们X1
成为一个长度为 的向量n1
,X2
成为一个长度为 的向量n2
,F1
成为一个N1
xn1
矩阵,F2
成为一个N2
xn2
矩阵,Q
成为一个N1
xN2
矩阵,并且符号p...
是索引向量。ntrapz 是梯形数值积分的函数。我想计算矩阵Q
如下:
for i1=1:N1
F1_13tmp=F1(i1, p1_13)'; % '
F1_13=F1_13tmp(:,ones(n2,1));
for i2=1:N2
F2_13 = F2(i2, p2_13);
Q_13_13 = Q(p1_13, p2_13);
Q(i1,i2) = Q(i1,i2) +
ntrapz(X2(p2_13), ntrapz(X1(p1_13)', Q_13_13.*F1_13).*F2_13);
end
end
问题是更新Q(i1,i2)
会改变Q_13_13 = Q(p1_13, p2_13)
下一次迭代的值。我想知道我们是否可以矢量化这样的 for 循环。如果没有,有什么想法可以加快代码速度吗?
预先感谢您的帮助。