错误:索引超出矩阵维度

时间:2014-05-03 12:44:16

标签: matlab indexing

当我尝试运行以下程序时,我一直收到错误消息。错误在最后一行。

function[P,t] = apprice(xl, xr, J, N, eps)

E=50;
r=0.02;
sigma=0.20;
T=1/3;

alpha=0.5*sigma^2*T;
nu=2*r/(sigma^2);
h=(xr-xl)/(J+1);
mu=-((nu+1)^2)/4;
delta_t=0.25/(N-1);
lambda=delta_t/(h^2);


for j=1:J+2
x(j)=xl+(j-1)*h;
end

for i=1:N+1
tau(i)=(i-1)*delta_t;
end

g_0=max(exp(((nu-1).*x)/2)-exp(((nu+1).*x)/2),0);

v(:,1)=g_0;

for n=2:N+1
g=g_0*exp(-mu*tau(n));
w_old(2:J+1)=max(v(2:J+1,n-1)',g(2:J+1,n));

我知道索引超出矩阵维度,但我不太确定在哪里解决问题。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

那么,首先,vv(:,1)=g_0;的定义在哪里?这可能会导致问题...您应事先声明v=zeros()具有一定的大小值。

此外,最后一行w_old中的w_old(2:J+1)=max(v(2:J+1,n-1)',g(2:J+1,n));也未定义。因为你从第二个元素引用这个变量,所以会弹出一个错误。