在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2539|回复: 1

求高手指教:syms命令在M文件中的运用。比较急,谢谢!

[复制链接]
发表于 2009-2-22 16:41:21 | 显示全部楼层 |阅读模式

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

您需要 登录 才可以下载或查看,没有账号?注册

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.

这是怎么回事呢?搞了半天也没解决。。。求高手指教!







 楼主| 发表于 2009-2-22 18:44:01 | 显示全部楼层
已经解决了。。。
把syms s ss改成syms s z,
用z替换ss,就没问题了。。。。
偶晕。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-20 13:44 , Processed in 0.014372 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表