我需要使用MATLAB在一个图中绘制12个置信区间,每个图中都标有平均值。我有什么想法可以做到吗?您可以在下图中找到示例:
我使用下面的代码来计算置信区间:
S=10; E=9; sigma=0.1; r=0.06; T=1;
Dt=1e-3; N=T/Dt; M=2^17;
V = zeros(M,1);
for i=1:M
Sfinal = S*exp((r-0.5*sigma^2)*T+sigma*sqrt(T)*randn);
V(i)=exp(-r*T)*max(Sfinal-E,0);
end
aM=mean(V); bM=std(V);
conf=[aM-1.96*bM/sqrt(M),aM+1.96*bM/sqrt(M)]
答案 0 :(得分:0)
首先,你可以写下:
,而不是你的循环V = exp(-r*T)*max(S*exp((r-0.5*sigma^2)*T+sigma*sqrt(T)*randn(M,1))-E,0);
randn(M,1)
一次创建所有M
个随机值,并且由于所有其他值都是标量,您可以通过简单地将其放入V
的公式来对您的计算进行矢量化(这样,也没有必要用零初始化V
。
要绘制错误栏,请使用errorbar
:
errorbar(aM,conf(1),conf(2))