【问题标题】:Error: Index exceeds matrix dimensions [closed]错误:索引超出矩阵维度 [关闭]
【发布时间】:2014-05-03 12:44:15
【问题描述】:

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

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));

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

任何帮助将不胜感激!

【问题讨论】:

  • 欢迎来到 Stack Overflow!要求人们发现代码中的错误并不是特别有效。您应该使用调试器(或添加打印语句)来隔离问题,方法是跟踪程序的进度,并将其与您期望发生的情况进行比较。一旦两者发生分歧,那么您就发现了您的问题。 (然后如果有必要,你应该构造一个minimal test-case。)
  • 当我们不知道您传入的变量的大小时,谁能提供帮助?见:mathworks.co.uk/help/matlab/debugging-code.html

标签: matlab indexing


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    • 1970-01-01
    相关资源
    最近更新 更多