使用Maltab设计二阶互补滤波器

1 minute read
 1clear,clc % HPF
 2
 3N = 2; % 二阶
 4fs=1000; % 采样率Hz
 5fc=50; % 3dB截止频率
 6OmegaC=(fc*2*pi/1000) /pi; % 截止频率归一化
 7
 8[ b, a ] = butter(N,OmegaC,'HIGH');
 9
10freqz(b,a);
 1clear,clc % LPF
 2
 3N = 2; % 二阶
 4fs=1000; % 采样率Hz
 5fc=50; % 3dB截止频率
 6OmegaC=(fc*2*pi/1000) /pi; % 截止频率归一化
 7
 8[ b, a ] = butter(N,OmegaC,'LOW');
 9
10freqz(b,a);

butter函数说明https://ww2.mathworks.cn/help/signal/ref/butter.html,默认是生成数字滤波器的传递函数系数,用双线性变换从模拟滤波器转为数字滤波器。

得到传递函数的系数b,a。进行反z变换到离散域,就可以得到差分方程。

$$ \frac{Y(z)_{zs}}{X(z)}=H(z)=\frac{B(z)}{A(z)} $$

$$ B(z)=\sum_{j=0}^m{b_{m-j}z^{-j}}=b_m+b_{m-1}z^{-1}+…+b_0z^{-m} \\\ A(z)=\sum_{i=0}^n{a_{n-i}z^{-i}}=a_n+a_{n-1}z^{-1}+…+a_0z^{-n} $$

在Matlab得到的[ b, a ]中,$b = [b_{m},b_{m-1}, \ …\ ,b_{0}],a = [a_{n},a_{n-1}, \ …\ ,a_{0}]$