訊號課組(一) 訊號與系統 Part 0 MATLAB在訊號與系統中的使用

Honour Van發表於2020-10-24

訊號的MATLAB實現

系統時域分析

微分方程求解

可以利用字串方程。Dy的寫法比較簡潔。

>>> dsolve('Dy + y *tan(x) - cos(x) = 0', 'x')
警告: Support of character vectors and strings will be removed in a future release.
Use sym objects to define differential equations instead. 

dsolve的官方文件中給出了新版的使用方法:

syms y(t)
ode = diff(y,t) == t*y
ySol(t) = dsolve(ode) %注意將結果定義成符號的函式,否則結果將只是一個

為了新增微分方程的初值條件,給出如下

syms y(t)
ode = diff(y,t) == t*y
cond = y(0) == 2;
ySol(t) = dsolve(ode,cond)

求解二階方程:

注意其中的二階導數表示方式

syms y(x)
Dy = diff(y);

ode = diff(y,x,2) == cos(2*x)-y;
cond1 = y(0) == 1;
cond2 = Dy(0) == 0;

conds = [cond1 cond2];
ySol(x) = dsolve(ode,conds); %加入兩個初始條件的二階方程求解
ySol = simplify(ySol) %化簡

數值求解系統的響應

求解衝激、階躍響應並繪製子圖

‘impulse’ 需要以下項之一:
Control System Toolbox
RF Toolbox
System Identification Toolbox

求解方程
y ′ ′ ( t ) + 5 y ′ ( t ) + 6 = 3 x ′ ( t ) + x ( t ) y''(t) + 5y'(t) + 6 = 3x'(t) + x(t) y(t)+5y(t)+6=3x(t)+x(t)
的衝激響應可以利用impulse函式。對於離散系統還可以使用impulz。同樣代入step函式可以求解階躍響應。引數為三個向量,前兩個描述微分方程,第三個描述離散時間、用於取樣。

a = [1 5 6];b = [3 2];
subplot(2,1,1), impulse(b,a,0:0.01:3);
subplot(2,1,2), step(b, a, 0:0.01:3);

繪製出如下的影像
在這裡插入圖片描述

Linear Simulation Tool

lsim函式求解任意微分方程所表出系統的響應。

MATLAB語法思考

https://jingyan.baidu.com/article/6079ad0eb611a928ff86db85.html

相關文章