monster 发表于 2010-5-10 20:36

如何实现对符号函数的运算

matlab7.0里面没有symmul等函数,直接加减乘除也不行。该怎么实现符号函数的运算呢?

ChaChing 发表于 2010-5-11 01:03

clc; clear; syms L R C s
G1=1/(L*s+R); G2=1/(C*s); G=G1*G2;
H=sym(1); GH=G*H; T=GH/(1+GH); simple(T)

但好奇干嘛用到符号运算!? Control System Toolbox中不就有许多现成函数!?
还有请LZ以后直接将程序打上来, 方便别人省时间:loveliness:

monster 发表于 2010-5-11 10:08

谢谢,我在看着《自动控制习题精解》那本书学,照著书上面打:
syms L R C s;
s=tf('s'); G1='1/(Ls+R)'; G2='1/Cs';
G=G1*G2;
??? Error using ==> mtimes
Inner matrix dimensions must agree.
我想多问一句是不是字符串不能直接运算的?

[ 本帖最后由 ChaChing 于 2010-5-11 13:31 编辑 ]

ChaChing 发表于 2010-5-11 13:41

原帖由 monster 于 2010-5-11 10:08 发表 http://www.chinavib.com/forum/images/common/back.gif
...是不是字符串不能直接运算的?
LZ这个问法, 有点说不定
原则上LZ使用符号运算, G1/G2应为sym object, 加上引号即是char array!
但不是说"字符串不能直接运算", 那错误是因G1/G2矩阵大小不符合矩阵运算!
试试下式, 并建议常whos看看矩阵大小
G1='1/(Ls+R)'; G2='1/(Cs+H)'; G=G1*G2'

monster 发表于 2010-5-11 22:33

是可以,G1是1*8的矩阵,G2‘是8*1的矩阵,可以相乘,但是相乘以后是一个数值解,不可以变成符号表达式吗?

ChaChing 发表于 2010-5-11 23:33

为何大小符合的文字矩阵, 可以相乘, 说来话长!
G=G1*G2'的运算等同double(G1)*double(G2)', 有兴趣LZ可以看看double(G1), double(G2)的值, 并help double & char ..., 总之符号与文字不能混用!

其实可以不用符号运算(若L/R/C已知)
clc; clear
L=2; R=3; C=4; s=tf('s');
G1=1/(L*s+R); G2=1/(C*s); G=G1*G2
H=1; GH=G*H; T=GH/(1+GH)

monster 发表于 2010-5-12 10:23

总算有点明白了,谢谢版主的辛勤劳动
页: [1]
查看完整版本: 如何实现对符号函数的运算