aiguo 发表于 2007-10-1 16:05

Index exceeds matrix dimensions 出错

请手指点一下如下代码的错误,运行后提示为 ??? Index exceeds matrix dimensions.
花了好长时间找不出错误的地方
t0=0;
t1=250;
t=t1-t0;
if t0==0
y2=inline('10*(1-0.5*tanh(0.1*(tau-65))+0.5*tanh(0.1*(tau-185)))');

k=0.003;
h=0.01;
z0=-50;
z1=150;
z=z1-z0;
m0=(z/h)+1;
Z=linspace(z0,z1,m0);

g=1.0;
r=0;
r1=1.0;
d1=0.5;
d2=0.5;

Pba1(1,:)=0;
Pba2(1,:)=0;
Pbc1(1,:)=0;
Pbc2(1,:)=0;
Pac1(1,:)=0;
Pac2(1,:)=0;
Paa1(1,:)=0;
Pbb1(1,:)=1;
Pcc1(1,:)=0;

a0=0.05;
seita=0;
A1(1,:)=0.1;
A2(1,:)=0;
T1(1,1)=0;
t2=1;
A(t2,1:201)=(A1(1,1:100:m0).^2+A2(1,1:100:m0).^2).^0.5;
A11(t2,1:201)=A1(1,1:100:m0);
A12(t2,1:201)=A2(1,1:100:m0);
=max((A1(1,:).^2+A2(1,:).^2).^0.5);
Z1(t2,1)=50+(YY(t2,1)-1)*h;
Pbc(t2,1:201)=(Pbc1(1,1:100:m0).^2+Pbc2(1,1:100:m0).^2).^0.5;
Pbc11(t2,1:201)=Pbc1(1,1:100:m0);
Pbc12(t2,1:201)=Pbc2(1,1:100:m0);

Um(t2,1)=max(Pbc(t2,1:201));
Pba(t2,1:201)=(Pba1(1,1:100:m0).^2+Pba2(1,1:100:m0).^2).^0.5;
Pbc(t2,1:201)=(Pbc1(1,1:100:m0).^2+Pbc2(1,1:100:m0).^2).^0.5;
Pba11(t2,1:201)=Pba1(1,1:100:m0);
Pba12(t2,1:201)=Pba2(1,1:100:m0);
Pcc(t2,1:201)=Pcc1(1,1:100:m0);
Paa(t2,1:201)=Paa1(1,1:100:m0);
Pbb(t2,1:201)=Pbb1(1,1:100:m0);
T(t2,1)=T1(1,1);
PHI(t2,1:201)=A(t2,1:201).^2;
Wphi(t2,1)=max(PHI(t2,1:201).^0.5);

save OBdate t1 t2 T A Z Pbc PHI Paa Pbb Pcc Pba Pac Vm Um Wphi YY Z1 Pbc11 Pbc12 Pba11 Pba12 A11 A12
end

??? Index exceeds matrix dimensions.

[ 本帖最后由 eight 于 2007-10-1 23:13 编辑 ]

花如月 发表于 2007-10-1 16:11

看置顶帖子

aiguo 发表于 2007-10-1 16:46

回复 #2 花如月 的帖子

置顶帖内没有找到这种错误的说明

xjzuo 发表于 2007-10-1 17:18

检查你定义的A1,A2...的维数,以及你写的诸如"A1(1,1:100:m0)"是否正确,即可发现问题.

花如月 发表于 2007-10-1 18:32

回复 #3 aiguo 的帖子

下标索引超出数组范围,按照楼上的方法仔细检查下

eight 发表于 2007-10-1 23:13

原帖由 aiguo 于 2007-10-1 16:46 发表 http://www.chinavib.com/forum/images/common/back.gif
置顶帖内没有找到这种错误的说明

这种错误自己调试一下即可解决

llab1 发表于 2009-6-4 01:07

所有矩阵维数的错误都可以并且应该通过自己仔细的调试改正:loveliness:

lmmcnn 发表于 2011-2-24 09:54

{:{13}:}如果文件很大,是否有什么简单的方法查找到错误的大概位置呢?谢谢!

swordless 发表于 2011-2-25 20:48

lmmcnn 发表于 2011-2-24 09:54 static/image/common/back.gif
如果文件很大,是否有什么简单的方法查找到错误的大概位置呢?谢谢!

我一般是写在。m文件里单步执行,到出错的那句就自动停止了。然后设一个断点在出错的那句前面,到执行到快到出错的地方了仔细观察变量看看是哪个地方的问题。
如果程序很长,或者循环次数很多没办法单步到出错,那么就只有用二分法试错了。比如端点设在中间某个位置,F5执行到断点没出错那问题肯定在后面半段代码了。。。以此类推。
对于循环的地方,可以结合条件断点来测试出错的循环条件。
如果循环中随机出错,有些随机误差模型会这样的,那就有点悲剧了。。。

lmmcnn 发表于 2011-3-18 16:38

回复 9 # swordless 的帖子

非常感谢!!!

ChaChing 发表于 2011-3-18 21:23

lmmcnn 发表于 2011-2-24 09:54 static/image/common/back.gif
如果文件很大,是否有什么简单的方法查找到错误的大概位置呢?谢谢!

报错讯息中不是就有指明并连接!?
页: [1]
查看完整版本: Index exceeds matrix dimensions 出错