如何实现对符号函数的运算
matlab7.0里面没有symmul等函数,直接加减乘除也不行。该怎么实现符号函数的运算呢? clc; clear; syms L R C sG1=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: 谢谢,我在看着《自动控制习题精解》那本书学,照著书上面打:
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 编辑 ] 原帖由 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' 是可以,G1是1*8的矩阵,G2‘是8*1的矩阵,可以相乘,但是相乘以后是一个数值解,不可以变成符号表达式吗? 为何大小符合的文字矩阵, 可以相乘, 说来话长!
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) 总算有点明白了,谢谢版主的辛勤劳动
页:
[1]