声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 20674|回复: 10

[编程技巧] Index exceeds matrix dimensions 出错

[复制链接]
发表于 2007-10-1 16:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
请手指点一下如下代码的错误,运行后提示为 ??? 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);
[Vm(t2,1),YY(t2,1)]=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 | 显示全部楼层
看置顶帖子
 楼主| 发表于 2007-10-1 16:46 | 显示全部楼层

回复 #2 花如月 的帖子

置顶帖内没有找到这种错误的说明
发表于 2007-10-1 17:18 | 显示全部楼层
检查你定义的A1,A2...的维数,以及你写的诸如"A1(1,1:100:m0)"是否正确,即可发现问题.

评分

1

查看全部评分

发表于 2007-10-1 18:32 | 显示全部楼层

回复 #3 aiguo 的帖子

下标索引超出数组范围,按照楼上的方法仔细检查下
发表于 2007-10-1 23:13 | 显示全部楼层
发表于 2009-6-4 01:07 | 显示全部楼层
所有矩阵维数的错误都可以并且应该通过自己仔细的调试改正:loveliness:
发表于 2011-2-24 09:54 | 显示全部楼层
如果文件很大,是否有什么简单的方法查找到错误的大概位置呢?谢谢!
发表于 2011-2-25 20:48 | 显示全部楼层
lmmcnn 发表于 2011-2-24 09:54
如果文件很大,是否有什么简单的方法查找到错误的大概位置呢?谢谢!

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

评分

1

查看全部评分

发表于 2011-3-18 16:38 | 显示全部楼层
回复 9 # swordless 的帖子

非常感谢!!!
发表于 2011-3-18 21:23 | 显示全部楼层
lmmcnn 发表于 2011-2-24 09:54
如果文件很大,是否有什么简单的方法查找到错误的大概位置呢?谢谢!

报错讯息中不是就有指明并连接!?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-21 14:54 , Processed in 0.053590 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表