【数字信号处理】线性常系数差分方程 ( 卷积 与 “ 线性常系数差分方程 “ | 使用 matlab 求解 “ 线性常系数差分方程 “ )

2023-03-30 11:50:01 浏览数 (2)

文章目录

  • 一、卷积 与 " 线性常系数差分方程 "
  • 二、使用 matlab 求解 " 线性常系数差分方程 "

一、卷积 与 " 线性常系数差分方程 "


" 线性常系数差分方程 " 不能使用 卷积函数 conv 函数进行求解 , 因为卷积的右侧没有

y(n)

, 卷积公式如下 :

y(n) = sum^{ infty}_{m = -infty} x(m) h(n-m) = x(n) * h(n)

而 " 线性常系数差分方程 " 如下 :

y(n) = sum_{i = 0}^M b_i x(n - i) - sum_{i = 1}^N a_i y(n - i) n geq M

在 " 线性常系数差分方程 " 公式的右侧比 卷积 公式中 , 多了一个

sum_{i = 1}^N a_i y(n - i)

项 , 其中有

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 函数语法如下 :

代码语言:javascript复制
yn = filter(B, A, xn, xi)
xi = filtic(B, A, ys, xs)

" 线性常系数差分方程 " 公式如下 :

y(n) = sum_{i = 0}^M b_i x(n - i) - sum_{i = 1}^N a_i y(n - i) n geq M

matlab 中的 filter 函数中的参数 与 " 线性常系数差分方程 " 公式项的对应关系 :

① B 参数 : filter 函数中的 B 向量

B = [b_0 , b_1, cdots,b_M]

就是公式中的

b_i

, 注意

i

范围是

[0,M]

;

② A 参数 : filter 函数中的 A 向量

A = [a_1 , a_2, cdots,a_N]

就是公式中的

a_i

, 注意

i

范围是

[1,N]

;

③ xn 参数 : 输入序列 对应的 向量 ;

④ xi 参数 : 该参数 与 ys 和 xs 条件有关 , ys 和 xs 是初始条件向量 , 分别是 :

y_s = [y(-1), y(-2), cdots , y(-N)]
x_s = [x(-1), x(-2), cdots , x(-N)]

xi 是通过 filtic 函数 计算出来的 , 需要传入

A , B

向量 , 和 ys 和 xs 条件 ;

0 人点赞