教你用matlab快速解決煩人的符號變換(Fourier、Laplace和 z 變換)和符號卷積

目錄

符號變換

Fourier變換及其反變換

Laplace變換及其反變換

Z變換及其反變換

符號卷積

備註


符號變換

Fourier變換及其反變換

fourier()是算符號表達式的傅里葉變換的,算出來結果要畫圖可以用ezplot();

【例 1】求  的 Fourier 變換。

matlab 代碼:

% 傅里葉變換
syms t w
ut=heaviside(t);
UT=fourier(ut)
% 結果
UT =
pi*dirac(w)-i/w

% 傅里葉反變換
Ut=ifourier(UT,w,t)
% 結果
Ut =
heaviside(t)

【例 2】根據 Fourier 變換定義,用積分指令求方波脈衝 的Fourier 變換。

% 傅里葉變換
syms A t w
syms tao positive
yt=heaviside(t+tao/2)-heaviside(t-tao/2);
Yw=fourier(A*yt,t,w)
% 結果
Yw =
2*A/w*sin(1/2*tao*w)
% 傅里葉反變換
Yt=ifourier(Yw,w,t)
% 結果
Yt =
A*(heaviside(t+1/2*tao)-heaviside(t-1/2*tao))
% 畫圖
yt3=subs(yt,tao,3)
Yw3=subs(Yw,[A,tao],[1,3])
subplot(2,1,1)
Ht=ezplot(yt3,[-3,3]);
set(Ht,'Color','r','LineWidth',3)
subplot(2,1,2),ezplot(Yw3)
% 輸出結果
yt3 =
heaviside(t+3/2)-heaviside(t-3/2)
Yw3 =
2/w*sin(3/2*w)


Laplace變換及其反變換

1、拉普拉斯(laplace)變換

語法:F= laplace(f,t,s)  %求時域函數f(t)的laplace變換F

說明:F是s的函數,參數s省略,返回結果F默認爲’s’的函數;f爲t的函數,當參數t省略,默認自由變量爲’t’。

【例1】求  的 Laplace 變換。

% Laplace變換
syms t s;
syms a b positive  
Dt=dirac(t-a); 
Ut=heaviside(t-b); 
Mt=[Dt,Ut;exp(-a*t)*sin(b*t),t^2*exp(-t)];
MS=laplace(Mt,t,s)
% 結果
MS =
[ exp(-s*a), exp(-s*b)/s]
[ 1/b/((s+a)^2/b^2+1), 2/(s+1)^3]

2、拉普拉斯(laplace)反變換

語法:F=i laplace(f,t,s)  %求F的laplace反變換f

【 例2】 求1/(s+a)和1函數的laplace反變換

% 1/(s+a)函數的laplace反變換
syms a t s
f1=ilaplace(1/(s+a),s,t) %求1/(s+a)函數的laplace反變換
% 1函數的laplace反變換
f2=ilaplace(1,s,t) %求1函數的laplace反變換是脈衝函數dirac(t)
% 結果
f1 =
    exp(-a*t)

f2 =
    dirac(t)

【例 3】驗證 Laplace 時移性質:

% 代碼
syms t s
syms t0 positive
ft=sym('f(t-t0)')*heaviside(t-t0)
FS=laplace(ft,t,s)
FS_t=ilaplace(FS,s,t)
% 結果
ft =
f(t-t0)*heaviside(t-t0)
FS =
exp(-s*t0)*laplace(f(t),t,s)
FS_t =
f(t-t0)*heaviside(t-t0)

Z變換及其反變換

1、z變換ztrans

單位階躍函數:f(t)=1(t)

採樣值f(nT)=1

clc,clear;
syms  z
f=1;
ztrans(f,z)%'f'是單位階躍函數,'z'是z函數的變量

單位階躍函數

clc,clear
syms  a b t z
f=1/(a-b)*(exp(-(b*t))-exp(-a*t));
ztrans(f)

2、z反變換iztrans

clc,clear
syms n  z
f=1;
F=ztrans(f,n,z);
iztrans(F,z,n)
【例 2.5-6】求序列 的 Z 變換,並用反變換驗算。
% z變換
syms n
Delta=sym('charfcn[0](n)'); %  <2>
D0=subs(Delta,n,0); %
D15=subs(Delta,n,15);  %
disp('[D0,D15]');disp([D0,D15])
% 結果
[D0,D15]
[ 1, 0]
% z反變換
syms z
fn=2*Delta+6*(1-(1/2)^n)
FZ=simple(ztrans(fn,n,z));
disp('FZ = ')
pretty(FZ)
FZ_n=iztrans(FZ,z,n)
% 結果
fn =
2*charfcn[0](n)+6-6*(1/2)^n
FZ =
          2
        4 z + 2
    --------------
          2
     2 z - 3 z + 1
FZ_n =
2*charfcn[0](n)+6-6*(1/2)^n

符號卷積

【例 1】已知系統衝激響應輸入下的輸出響應。

% 變換
syms T t tao
ut=exp(-t); 
ht=exp(-t/T)/T; 
uh_tao=subs(ut,t,tao)*subs(ht,t,t-tao); 
yt=simple(simple(int(uh_tao,tao,0,t)))
% 結果
yt =
-(exp(-t)-exp(-t/T))/(T-1)

【例 2】採用 Laplace 變換和反變換求上例的輸出響應。

% 代碼
syms s
yt=ilaplace(laplace(ut,t,s)*laplace(ht,t,s),s,t);
yt=simple(yt)
% 結果
yt =
(-exp(-t)+exp(-t/T))/(T-1)

【例 2.5-9】求函數 和 的卷積。

% 代碼
syms tao
t=sym('t','positive'); 
ut=heaviside(t)-heaviside(t-1);
ht=t*exp(-t);
yt=int(subs(ut,t,tao)*subs(ht,t,t-tao),tao,0,t)
yt=collect(yt,'heaviside(t-1)')
% 結果
yt =
1+t*heaviside(t-1)*exp(1-t)-heaviside(t-1)+(-t-1)/exp(t)
yt =
(exp(1-t)*t-1)*heaviside(t-1)+1+(-t-1)/exp(t)

備註

各位老鐵來個“關注”、“點贊”、“評論”三連擊哦

各位老鐵來個“關注”、“點贊”、“評論”三連擊哦

各位老鐵來個“關注”、“點贊”、“評論”三連擊哦

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章