声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2480|回复: 9

[编程技巧] Matlab的ode45,In an assignment A(I) = B, the number of elements in B and

[复制链接]
发表于 2009-5-3 18:06 | 显示全部楼层 |阅读模式

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

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

x
ode45 解一运动微分方程,
ic=[0,0]; tspan=[0,20]; [T,X]=ode45(@sigs,tspan,ic);
运行后出现In an assignment  A(I) = B, the number of elements in B and I must be the same.
Error in ==> sigs at 11
dq(2)=(k*y+c*dy-k*q(1)-c*q(2))/m;

估计问题出在y 和dy,因为把chirp换成sin和cos后就可以解,那用chirp的问题出在哪里,或是其他什么原因?
目标函数如下:
function dq=sigs(t,q)
%function to calculate time history of response
m=60;k=44130;c=1485;
% generate input
t = 0:0.001:2;
y = chirp(t,0,1,15); dy=[diff(y),1.001];
%q(1)=displacement;q(2)=velocity
dq=zeros(2,1); dq(1)=q(2); dq(2)=(k*y+c*dy-k*q(1)-c*q(2))/m;
end

[ 本帖最后由 ChaChing 于 2009-7-5 19:19 编辑 ]
回复
分享到:

使用道具 举报

发表于 2009-5-3 22:25 | 显示全部楼层
function dq=sigs(t,q)
%function to calculate time history of response
m=60;k=44130;c=1485;
% generate input
t = 0:0.001:2;           
y = chirp(t,0,1,15);
dy=[diff(y),1.001];
%q(1)=displacement;q(2)=velocity
dq=zeros(2,1);
dq(1)=q(2);
dq(2)=(k*y+c*dy-k*q(1)-c*q(2))/m;
end


这里面不能再设置t了,因为ode默认的就是时间t,而且你这两个时间t都是不同的区域内的,我不知道你里面的这个y是什么意图,这样子写是不是本身就有问题呢

评分

1

查看全部评分

发表于 2009-5-3 22:45 | 显示全部楼层
Ref
13F of 常见的程序出错问题整理 (eight)
http://forum.vibunion.com/forum/thread-46001-1-1.html

还有勿重覆发帖!

[ 本帖最后由 ChaChing 于 2009-5-3 22:52 编辑 ]
 楼主| 发表于 2009-5-3 23:08 | 显示全部楼层
这个能看懂,可是我这个问题就想不通,难道说右边是一个时间序列,左边只是一个值吗
恩,我把t = 0:0.001:2去掉就没有错误,当然结果对还是错再说。这里的y是位移激励,dy是对应的速度
为什么chirp产生的时间只有两秒,怎么设置更长的时间?

[ 本帖最后由 ChaChing 于 2009-7-5 19:21 编辑 ]
发表于 2009-5-4 09:44 | 显示全部楼层

回复 地板 ukman 的帖子

建议仔细看下chirp帮助文献!
t = 0:0.001:2; 当然只有两秒
发表于 2009-5-4 09:55 | 显示全部楼层


这个无需问别人, 自个儿设断点或display结果看看即可!
dq(1)=q(2);
zzz=(k*y+c*dy-k*q(1)-c*q(2))/m; size(zzz)
dq(2)=(k*y+c*dy-k*q(1)-c*q(2))/m;
发表于 2009-5-4 10:47 | 显示全部楼层
将t = 0:0.001:2去掉之后,y = chirp(t,0,1,15);这里面的t就是仿真的时间t了,所以我觉得你有必要把你的方程给出来,感觉你编程有点问题
 楼主| 发表于 2009-5-4 19:49 | 显示全部楼层
方程很简单,如下。
mq''+k*(q-y)+c*(q'-y')=0
发表于 2009-5-4 22:28 | 显示全部楼层

回复 7楼 ukman 的帖子

那么y是一个怎么样的函数呢?
 楼主| 发表于 2009-5-4 23:10 | 显示全部楼层
y是激励,自己定义的。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-6-30 14:24 , Processed in 0.054424 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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