MATLAB多項式運算與符號運算

利用多項式運算和符號表達式運算十分方便,下面總結了一些常用的函數,並附上自己編寫的將s域變換到z域的函數

多項式運算

1.r=roots(p)多項式求根

2.p3=conv(p1,p2)多項式相乘

3.p1=polyder(p)多項式求導

3.polyval(p,x)多項式代入求值

4.polyfit(x,y,n)多項式擬合

5. [r,p,k] =residue(b,a)部分分式展開

注:多項式運算的函數都是以向量來表示的,注意與符號表達式的區別,兩者間可以相互轉換 poly2sym(),sym2poly()

 

符號運算

1.syms x,y,z; 定義符號變量

2.sym=poly2sym(p,’s’);將多項式向量轉換成符號表達式

3.p=sym2poly(sym);將符號表達式轉化成多項式向量

4.[N,D]=numden(sym);將符號表達式分離出分子分母

5.subs(sym,’x’,value)符號表達式代數求值

6. simplify(sym)化簡

7.pretty(sym)美化輸出符號表達式

8.expand(sym)展開

9.collect(sym)合併

10. factor(sym) 因式分解

11.solve(sym)求解sym=0的解。

 

function [numz,denz]=s2z(nums,dens,Ts)
%[numz,denz]=s2z(nums,dens,Ts)
%功能:將s域傳遞函數變換到z域
%輸入:
%nums,dens 連續系統以s爲變量分子,分母多項式
%輸出:
%numz,denz 離散系統以z爲變量分子,分母多項式
syms t n s z;
Gs_num=poly2sym(nums);
Gs_den=poly2sym(dens);
Gs=Gs_num/Gs_den;
ft=ilaplace(Gs); %對連續傳函Laplace反變換
Gnt=subs(ft,t,n*Ts); %離散化
Gz=ztrans(Gnt); %z變換
[a,b]=numden(Gz); %numden函數將符號表達式的分子與分母分離
numz=sym2poly(a);
denz=sym2poly(b);
end

發佈了39 篇原創文章 · 獲贊 122 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章