文章目錄
- 一、卷積 與 " 線性常系數差分方程 "
- 二、使用 matlab 求解 " 線性常系數差分方程 "
一、卷積 與 " 線性常系數差分方程 "
" 線性常系數差分方程 " 不能使用 卷積函式 conv 函式進行求解 , 因為卷積的右側沒有 y ( n ) y(n) y(n) , 卷積公式如下 :
y ( n ) = ∑ m = ? ∞ + ∞ x ( m ) h ( n ? m ) = x ( n ) ? h ( n ) y(n) = \sum^{+\infty}_{m = -\infty} x(m) h(n-m) = x(n) * h(n) y(n)=m=?∞∑+∞?x(m)h(n?m)=x(n)?h(n)
而 " 線性常系數差分方程 " 如下 :
y ( n ) = ∑ i = 0 M b i x ( n ? i ) ? ∑ i = 1 N a i y ( n ? i ) n ≥ M y(n) = \sum_{i = 0}^M b_i x(n - i) - \sum_{i = 1}^N a_i y(n - i) \ \ \ \ \ \ \ n \geq M y(n)=i=0∑M?bi?x(n?i)?i=1∑N?ai?y(n?i) n≥M
在 " 線性常系數差分方程 " 公式的右側比 卷積 公式中 , 多了一個 ∑ i = 1 N a i y ( n ? i ) \sum_{i = 1}^N a_i y(n - i) ∑i=1N?ai?y(n?i) 項 , 其中有 y ( n ) y(n) y(n) 序列 , 這樣就無法使用 conv 卷積函式求解 " 線性常系數差分方程 " ;
二、使用 matlab 求解 " 線性常系數差分方程 "
matlab 中 , 使用 filter 函式, 求解 " 線性常系數差分方程 " ;
參考檔案 :
- filter 函式 : https://ww2.mathworks.cn/help/matlab/ref/filter.html
- filtic 函式 : https://ww2.mathworks.cn/help/signal/ref/filtic.html
filter 函式語法如下 :
yn = filter(B, A, xn, xi)
xi = filtic(B, A, ys, xs)
" 線性常系數差分方程 " 公式如下 :
y ( n ) = ∑ i = 0 M b i x ( n ? i ) ? ∑ i = 1 N a i y ( n ? i ) n ≥ M y(n) = \sum_{i = 0}^M b_i x(n - i) - \sum_{i = 1}^N a_i y(n - i) \ \ \ \ \ \ \ n \geq M y(n)=i=0∑M?bi?x(n?i)?i=1∑N?ai?y(n?i) n≥M
matlab 中的 filter 函式中的引數 與 " 線性常系數差分方程 " 公式項的對應關系 :
① B 引數 : filter 函式中的 B 向量
B = [ b 0 , b 1 , ? ? , b M ] B = [b_0 , b_1, \cdots,b_M] B=[b0?,b1?,?,bM?]
就是公式中的 b i b_i bi? , 注意 i i i 范圍是 [ 0 , M ] [0,M] [0,M] ;
② A 引數 : filter 函式中的 A 向量
A = [ a 1 , a 2 , ? ? , a N ] A = [a_1 , a_2, \cdots,a_N] A=[a1?,a2?,?,aN?]
就是公式中的 a i a_i ai? , 注意 i i i 范圍是 [ 1 , N ] [1,N] [1,N] ;
③ xn 引數 : 輸入序列 對應的 向量 ;
④ xi 引數 : 該引數 與 ys 和 xs 條件有關 , ys 和 xs 是初始條件向量 , 分別是 :
y s = [ y ( ? 1 ) , y ( ? 2 ) , ? ? , y ( ? N ) ] y_s = [y(-1), y(-2), \cdots , y(-N)] ys?=[y(?1),y(?2),?,y(?N)]
x s = [ x ( ? 1 ) , x ( ? 2 ) , ? ? , x ( ? N ) ] x_s = [x(-1), x(-2), \cdots , x(-N)] xs?=[x(?1),x(?2),?,x(?N)]
xi 是通過 filtic 函式 計算出來的 , 需要傳入 A , B A , B A,B 向量 , 和 ys 和 xs 條件 ;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/433376.html
標籤:AI
