24小时热门版块排行榜    

查看: 482  |  回复: 9
当前主题已经存档。
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

monitor2885

至尊木虫 (职业作家)

队长

[交流] 【求助】读个Matlab小程序ode45【已解决】 已有3人参与

function testplot
clear;clc
t=0:1:20;
[t,y]=ode45(@ivpodefun,t,[0 2]);
plot(t,y(:,1));

function dydt=ivpodefun(t,y)
cc=[1;5;8;13;20;24;30;2;3;9];
if t<=10
for i=1:20
u((i-1)*1<=t&&t<=(i*1))=cc(i);
end
else
u=0;
end
dydt=zeros(2,1);
dydt(1)=y(2);
dydt(2)=u*(1-y(1)^2)*y(2)-y(1);

??? Attempted to access cc(11); index out of bounds because numel(cc)=10.

提示说没有cc(11)的值,确实如此(数组cc一共10个数值)。但是我想知道,为什么程序会读取到cc(11)呢?当ode中的 t 不满足 if t<=10条件时,程序就应该跳到 else u=0;也就是说,程序应该不会读取cc(11)的值。怎么回事呢?

[ Last edited by nono2009 on 2010-4-14 at 10:39 ]
回复此楼
Retirement
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

change0618

铁杆木虫 (著名写手)

方丈大师

monitor2885(金币+3): 2010-04-14 09:45
建议楼主先去学习一下for语句和if语句
9楼2010-04-14 00:11:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 10 个回答

monitor2885

至尊木虫 (职业作家)

队长

u括号里面是判断句。就是起到分段函数的作用。
0 1 2
Retirement
2楼2010-04-12 15:10:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

change0618

铁杆木虫 (著名写手)

方丈大师


adu886886(金币+1):x谢谢指导 2010-04-14 08:10
monitor2885(金币+1): 2010-04-14 09:44
monitor2885(金币+2): 2010-04-14 09:46
for i=1:20
u((i-1)*1<=t&&t<=(i*1))=cc(i);
end
是这里碰到了11
3楼2010-04-13 17:36:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

change0618

铁杆木虫 (著名写手)

方丈大师

monitor2885(金币+1): 2010-04-14 09:46
以前好像这种问题给你处理过,是用分段积分,看来你还是不满意啊。
4楼2010-04-13 17:40:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见