|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 eecsseudl 于 2013-4-29 10:06 编辑
请教关于syms命令的问题!比较急,谢谢!
x0=rand(3,1);k=rand(3,3);theta=rand(3,1);alpha=rand(3,1);beta=rand(3,3);delta_t=0.1;
syms s ss
cmx=exp(-k*delta_t)*x0 + int(exp(-k*s),s,0,delta_t)*k*theta;
cmxss=exp(-k*ss)*x0 + int(exp(-k*s),s,0,ss)*k*theta;
F=diag(alpha) + diag(beta(:,1))*cmxss(1) + diag(beta(:,2))*cmxss(2) + diag(beta(:,3))*cmxss(3);
FF=exp(-k*(delta_t - ss))*F*(exp(-k*(delta_t - ss)))';
cvx=int(FF,ss,0,delta_t);
上面几行命令,直接放在command windows 命令窗口中运行,没有问题;
但是放到M文件中,把第一之外的其他行编成function函数,M文件程序如下:
function [cmx cvx]=cms(x0,k,theta,alpha,beta,delta_t)
syms s ss
cmx=exp(-k*delta_t)*x0 + int(exp(-k*s),s,0,delta_t)*k*theta;
cmxss=exp(-k*ss)*x0 + int(exp(-k*s),s,0,ss)*k*theta;
F=diag(alpha) + diag(beta(:,1))*cmxss(1) + diag(beta(:,2))*cmxss(2) + diag(beta(:,3))*cmxss(3);
FF=exp(-k*(delta_t - ss))*F*(exp(-k*(delta_t - ss)))';
cvx=int(FF,ss,0,delta_t);
但是[cmx cvx]=cms(x0,k,theta,alpha,beta,delta_t)命令运行到
cmxss=exp(-k*ss)*x0 + int(exp(-k*s),s,0,ss)*k*theta时却报错:
??? Error using ==> ss.mtimes
In SYS1*SYS2, systems must have compatible dimensions.
这是怎么回事呢?搞了半天也没解决。。。求高手指教!
|
|