S= zeros(Sim,n+1);
S(:,1)=S_0;
for i=1:round(n)
S(:,i+1) = S(:,i) .* cte_exp .* exp(sigma.*sqrt(dt).*normrnd(0,1,Sim,1));
end
我试图用矩阵运算重写这个for循环,但问题是每个列都需要前一列。有谁知道如何解决这个问题?
答案 0 :(得分:0)
因为每列是前一列和一些新数据的逐元素乘法,所以您只能使用新数据填充矩阵,然后使用cumprod将每列的乘法与前一列相乘。
S = [ S_0 , cte_exp .* exp(sigma.*sqrt(dt).*normrnd(0,1,Sim,round(n))) ];
S = cumprod(S,2);