Matlab-信號系統筆記

備註:MOOC上西電《信號與系統》課程中的MATLAB編程部分筆記,chapter爲對應章節。

chapter1

1.連續信號的繪製

%連續信號
%f(t) = 5e.^(-0.8t)sin(πt) 0<t<5
b = 5;a = 0.8;t = 0:0.001:5;
x = b*exp(-a*t).*sin(pi*t)
plot(t,x)

在這裏插入圖片描述

2.離散信號的繪製

%離散信號
%f(k) = 2(0.8).^k 
c = 2;d = 0.8;k = -5:5;
y = c*d.^k;
stem(k,y)

在這裏插入圖片描述

chapter2

1.求解系統響應

求LTI系統的零狀態相應的函數爲lsim,調用格式爲:

y = lsim(sys,f,t)

其中,t表示計算系統相應的抽樣點向量;f是系統輸入信號,sys是LTI系統模型,表示微分方程。
系統模型sys要藉助tf函數,調用格式爲:

sys = tf(b,a)

b和a分別爲微分方程的右端和左端的各項係數。
例如:{y}''(t)+5{y}'(t)+6y(t) = {f}''(t) + 2f(t)

%微分方程
a=[1,5,6];b=[1,0,2];
sys=tf(b,a)

例題:系統的微分方程爲{y}''(t)+2{y}'(t)+77y(t) = f(t),在t≥0接入激勵f(t)=10sin(2\pi t),求零狀態響應。

b=[1];a=[1 2 77];
sys=tf(b,a);
t = 0:0.01:5;
f = 10*sin(2*pi*t);
y = lsim(sys,f,t);
plot(t,y);
xlabel('Time(sec)')
ylabel('y(t)')

 

 2.求解衝激響應和階躍響應

LTI系統的微分方程爲:

\sum_{i=1}^{n}a_{i}y^{(i)}(t) = \sum_{j=1}^{m}b_{i}f^{(i)}(t)

衝激響應的函數爲:impulse(b,a)

階躍響應的函數爲:step(b,a)

 例題:求下列系統的衝激響應和階躍響應。

7{y}''(t)+4{y}'(t)+6y(t) = {f}'(t) + f(t)

a=[7 4 6];
b=[1 1];
subplot(2,1,1)
impulse(b,a);
subplot(2,1,2)
step(b,a)

 

 3.卷積的求解

MATLAB中處理離散卷積的函數爲:conv(f1,f2),對序列做卷積運算。

處理連續信號的卷積時,需要對連續信號取相同的步長,結果再乘實際步長。

例題:

已知兩個連續時間信號爲:

f1(t)=\left\{\begin{matrix} 2,0<t<1\\ 0,else\end{matrix}\right.f2(t)= \left\{\begin{matrix} t,0<t<2\\ 0,else\end{matrix}\right.

利用MATLAB畫出f1(t)* f2(t)的時域波形圖。

t11=0;t12=1;t21=0;t22=2;
t1=t11:0.001:t12;
ft1=2*rectpuls(t1-0.5,1); %幅值爲1,寬度爲1,t1=0.5點對稱的方波信號
t2=t21:0.001:t22
ft2=t2;
t3=t11+t21:0.001:t12+t22;
ft3=conv(ft1,ft2);
ft3=ft3*0.001;
plot(t3,ft3)
title('ft1(t)*ft2(t) ')

 

 chapter3

1.求解單位脈衝響應

MATLAB提供了專門用於求LTI離散系統的單位脈 衝響應的函數:

h=impz(b,a,k) 

 

 其中a=[a0 ,a1 ,a2 ,…, an ],b=[b0 ,b1 ,b2 ,…, bn ]分別是差分方程左右的係數向量,k表示輸出序列的取值範圍,h 就是系統的單位脈衝響應。

例題:

求離散系統的單位脈衝響應。

y(k)+3y(k-1)+2y(k-2)=f(k)

k=0:10;
a=[1 3 2]; %構造方程左右係數向量
b=[1];
h=impz(b,a,k); %求單位脈衝響應並繪圖
stem(k,h,'.')

 2.卷積和的求解(離散)

MATLAB中用於計算離散序列卷積的函數爲: conv(x1,x2)

例:求以下兩個離散序列的卷積。

x_{1}(k)=sin(k),0\leq k\leq 10,x_{2}(k)=0.8^{k},0\leq k\leq 15

k1=0:10; %x1的變量取值範圍
x1=sin(k1); %構建x1序列
k2=0:15; %x2的變量取值範圍
x2=0.8.^k2; %構建x2序列
y=conv(x1,x2); 
subplot(3,1,1)
stem(k1,x1)
subplot(3,1,2)
stem(k2,x2)
subplot(3,1,3)
stem(y)

 chapter4

1.求解系統響應

例題:

已知系統的頻率響應函數和輸入分別爲:

H(j\omega )=\frac{1-j\omega }{1+j\omega },f(t)=sin(t)+sin(3t)

試用Matlab求解系統的響應。

t=0:pi/100:4*pi;
b=[-1,1]; %頻率響應函數的分子係數
a=[1 1]; %頻率響應函數的分母系數
ft=sin(t)+sin(3*t); % 激勵
yt=lsim(b,a,ft,t); %求解響應
plot(t,ft,'r')
hold on
plot(t,yt,'b')

 2.Sa信號的採樣和恢復

例:信號Sa(t)作爲被採樣信號,信號帶寬B=1, 採樣頻 率ωs=2B,此頻率下的採樣爲Nyquist採樣,對採樣及恢復過程用Matlab進行仿真。


B=1; %信號帶寬
wc=B; %濾波器截止頻率
Ts=pi/B; %採樣間隔
ws=2*pi/Ts %採樣角頻率
N=100; %濾波器時域採樣點數
n=-N:N;
nTs=n.*Ts; %採樣數據的採樣時間
fs=sinc(nTs/pi); %函數的採樣點
Dt=0.005; %恢復信號的採樣間隔
t=-15:Dt:15; %恢復信號的範圍
fa=fs*Ts*wc/pi*sinc((wc/pi)*(ones(length(nTs),1)*t-nTs'*ones(1,length(t))));
%信號重構
error=abs(fa-sinc(t/pi)); %求重構信號與原信號的歸一化誤差
subplot(2,1,1)
plot(t,fa)
title('由 sa(t)=sinc(t/pi)的 Nyquist抽樣信號重構 sa(t)')
subplot(2,1,2)
plot(t,error)
title('Nyquist抽樣信號與原信號的誤差 error(t)')

 從誤差圖形中可以看到,用採樣信號恢復的信號與原始信號的誤差是極小的,而且這種誤差來自於計算過程的數值計算誤差。

表明:對一個信號進行Nyquist採樣後,能夠無誤差地從採樣信號中恢復出原信號。

------------------------------------

以下的部分在:MOOC西電《工程信號與系統》

 1.拉普拉斯變換的求解

MATLAB內置了符號函數laplace 和ilaplace函數分別對應拉普拉斯變換與反變換。

例: 計算f1(t)=e^{-t}\varepsilon (t),f2(t)=te^{-0.5t}\varepsilon (t)的卷積。

這裏先求拉普拉斯變換,然後時域卷積等於頻域乘積。最後再反變換得到時域的卷積。

syms t;t=sym('t','positive'); %t定義爲正的“符號”變量
fs1=laplace(exp(-t)); %f1(t)的Laplace變換
fs2=laplace(t*exp(-t/2)); %f2(t)的Laplace變換
yt=simple(ilaplace(fs1*fs2)); %利用Laplace反變換求時域解
fs1,fs2,yt

運行結果:

fs1 =
 
1/(s + 1)
 
 
fs2 =
 
1/(s + 1/2)^2
 
 
yt =
 
4*exp(-t) - 4*exp(-t/2) + 2*t*exp(-t/2)

2.Matlab繪製零極點圖、判斷穩定

例題:

利用MATLAB畫出系統H(s)=\frac{s^{2}+4s+3}{s^{4}+3s^{3}+4s^{2}+6s+4}的零極點圖,並判斷系統的穩定性。

b=[1 4 3]; %分子係數,按降冪順序排列
a=[1 3 4 6 4]; %分母系數,按降冪順序排列
sys=tf(b,a)
pzmap(sys);sgrid;
azp=roots(a); %求出極點azp,在左半平面即爲穩定
%根據參量wd的值判斷穩定:1表示穩定,0表示不穩定
wd=1;
for k=1:length(azp)
    if real(azp(k))>-0.000001
        wd=0;  
    end
if wd==0
    title('不穩定系統');
elseif wd==1
    title('穩定系統');
end
end

運行結果:

sys =
 
          s^2 + 4 s + 3
  -----------------------------
  s^4 + 3 s^3 + 4 s^2 + 6 s + 4
 
Continuous-time transfer function.

 系統的零極圖,如圖所示,可見系統有4個極點, 2個零點,其中在虛軸上有一對共軛極點,故該系統是不穩定的。

(知識回顧:系統穩定需要H(s)極點全部都在左半開平面

3.求頻率響應函數,判斷穩定

例題:

已知系統函數H(s)=\frac{1}{s^{3}+2s^{2}+3s+1},畫出其零極點分佈,求系統的單位衝激響應h(t) , 和頻率響應H(jw) ,並判斷系統是否穩定。

num=[1];
den=[1 2 3 1];
sys=tf(num,den);
poles=roots(den);
figure(1);
pzmap(sys);
t=0:0.02:10;
h=impulse(num,den,t);
figure(2);plot(t,h);
title('Impulse Respone')
[H,w]=freqs(num,den);
figure(3);plot(w,abs(H));

 

 

 poles=-0.4302 -0.7849 +1.3071i -0.7849 -1.3071i

極點都在左半開平面,系統穩定。

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