用矩阵乘法代替for循环
Replacing for loop by matrix multiplication
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 循环,但问题是对于每一列你都需要前一列。有人知道如何解决这个问题吗?
因为每一列都是前一列和一些新数据的element-wise乘积,你可以只用新数据填充一个矩阵,然后使用cumprod应用每列的乘积与之前的
S = [ S_0 , cte_exp .* exp(sigma.*sqrt(dt).*normrnd(0,1,Sim,round(n))) ];
S = cumprod(S,2);
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 循环,但问题是对于每一列你都需要前一列。有人知道如何解决这个问题吗?
因为每一列都是前一列和一些新数据的element-wise乘积,你可以只用新数据填充一个矩阵,然后使用cumprod应用每列的乘积与之前的
S = [ S_0 , cte_exp .* exp(sigma.*sqrt(dt).*normrnd(0,1,Sim,round(n))) ];
S = cumprod(S,2);