siyanyu 发表于 2008-7-17 11:07

帮忙改个错误(Index exceeds matrix dimensions.)

function dy=Mathieu(t,x)
dy=zeros(4,1);
dy(1)=x(2);
dy(2)=-x(1)+0.005*x(1)^3+1/8*(-x(2)+4*x(2)^3+sin(t));
dy(3)=x(4);
dy(4)=(1+0.015*x(1)^2)*x(3)+1/8*(-1+12*x(2)^2)*x(4);

tspan=linspace(1,1000,6000);
=ode45('Mathieu',tspan,);
plot(t(5000,10000),y(5000,10000))

??? Index exceeds matrix dimensions.
Error in ==> shijianbianli2 at 5
plot(t(5000,10000),y(5000,10000))

出现这个错误怎么改呢?请高手指教一下,我快郁闷死了,怎么改也不对

[ 本帖最后由 sigma665 于 2008-7-21 23:40 编辑 ]

dragonfly 发表于 2008-7-17 12:25

楼主可以参考下面这个帖子
http://forum.vibunion.com/forum/thread-46001-1-1.html
的12楼

siyanyu 发表于 2008-7-17 12:37

回复 2楼 的帖子

是啊,我看了,可是还是改不过来
MATLAB学的太差了

dragonfly 发表于 2008-7-17 13:09

我的matlab也很差 所以对你的程序不大了解
不过我觉得你
tspan=linspace(1,1000,6000);
=ode45('Mathieu',tspan,);
plot(t(5000,10000),y(5000,10000))
这部分有些问题吧
你的t和y都是几维的矩阵啊?我只知道tspan是1*6000的,不知道你的t y是不是也是一行N列的呢,如果那样的话,y(5000,10000)这个应该表示的是y的第5000行第10000列的数吧,他有那么多行列么?所以说超出范围了……

另外,你是不是想画plot(t(5000:10000),y(5000:10000))这个呢?

siyanyu 发表于 2008-7-17 13:31

回复 4楼 的帖子

你说的太对了,呵呵
但是就算我用plot(t(500:1000),y(500:1000,1))运行也是说超出范围
我是想画plot(t(5000:10000),y(5000:10000))这样的,因为前几百个瞬间点不要

sogooda 发表于 2008-7-18 08:20

回复 楼主 的帖子

你的这个错误提示很常见,下标越界了。
可以参考本版置顶帖先。

sigma665 发表于 2008-7-21 21:00

plot(t(5000:end),y(5000:end))试试
页: [1]
查看完整版本: 帮忙改个错误(Index exceeds matrix dimensions.)