马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
我在用ode45解微分方程时,方程的输入信号是实验得到的一组数据,我在文本文档中保存着,现在要把它带入到方程中,但是我不知道到底该怎么办?
我想这个信号也是随时间变化的,所以在调用ode45的时候,我用了一下语句:
[t,x]=ode45(@vdp21,[0.01:0.01:50],y0,[],M,bv,Fq,w,T,kv,Fj);
这样,时间t 相当于有5000个时间点,我的文本文档存的输入信号也是5000个数,所以在vdp21中我将输入信号写为:signal(100*t);因为我想,这个t就是0.01:0.01:50的那么每次取100*t就刚好在每次分别代入输入信号(signal)的第1~5000个值,但是在运行时一直出现这样错误提示:
Attempted to access signal(1.00003); index must be a positive integer or logical.
Error in ==> vdp21 at 18
if signal(100*t)>0
Error in ==> ode45 at 324
f(:,2) = feval(odeFcn,t+hA(1),y+f*hB(:,1),odeArgs{:});
Error in ==> vdp21_ceshi at 13
[t,x]=ode45(@vdp21,[0.01:0.01:50],y0,[],M,bv,Fq,w,T,kv,Fj);
我明明把时间给了定步长的0.01:0.01:50,那么我100*t应该就是1:1:5000么,为什么会出现这样的错误?还望高手赐教!! |