【发布时间】:2021-04-21 15:39:29
【问题描述】:
我编写了以下 MATLAB 代码。我想知道如何在不使用 for 循环的情况下对其进行优化。 任何帮助将不胜感激。
MATLAB 代码:
%Some parameters:
s = 50;
k = 50;
r = 0.1;
v = 0.2;
t = 2;
n=10000;
% Calculate CT by calling EurCall function
CT = EurCall(s, k, r, v, t, n);
%Function EurCall to be called
function C = EurCall(s, k, r, v, t, n)
X = zeros(n,1);
hh = zeros(n,1);
for ii = 1 : n
X(ii) = normrnd(0, 1);
SS = s*exp((r - v^2/2)*t + v*X(ii)*sqrt(t));
hh(ii) = exp(-r*t)*max(SS - k, 0);
end %end for loop
C = (1/n) * sum(hh);
end %end function
【问题讨论】:
-
为什么不想使用循环?有人认为 MATLAB 中的循环很慢,但这种情况已经很多很多年了。这段代码是不是太慢了?这是您计算的瓶颈吗?你真的需要加快速度吗?如果是这样,请寻求加快速度的方法。请不要仅仅删除循环,因为您听说它们很慢!
标签: matlab for-loop optimization