How to vectorize matrixvector multiplications with previous-dependent input?
显示 更早的评论
How to avoid the for loop in the following code, creating a 2D polymer structure with a new random created bending angle of the following segment:
N=10;
K=200;
Xi=50;
l=0.311;
Fi=normrnd(0,sqrt(l/Xi),[1,1,K])
dna=zeros(2,K);
t=ones(2,K);
for i=2:K
A=[cos(Fi(i)) -sin(Fi(i));sin(Fi(i)) cos(Fi(i))]
t(:,i)=A*t(:,i-1);
dna(:,i)=dna(:,i-1)+t(:,i);
end
采纳的回答
更多回答(1 个)
Most of the operations can be moved out of the loop:
t = ones(2,K);
B = [cos(Fi),-sin(Fi);sin(Fi),cos(Fi)];
for k = 2:K
t(:,k) = B(:,:,k) * t(:,k-1);
end
t(:,1) = 0;
dna = cumsum(t,2);
类别
在 帮助中心 和 File Exchange 中查找有关 Biomechanics 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!