已知一直接型数字滤波器系统函数H(z),如何用matlab将其转换为并联型?
时间: 2024-05-20 19:16:19 浏览: 12
要将直接型数字滤波器系统函数H(z)转换为并联型,可以使用以下步骤:
1. 将H(z)进行部分分式分解,得到形如以下的表达式:
H(z) = A(z) / B(z) = C1 / (1 - D1*z^-1) + C2 / (1 - D2*z^-1) + ... + Cn / (1 - Dn*z^-1)
其中,C1、C2、...、Cn是常数,D1、D2、...、Dn是滤波器的极点。
2. 对每个一阶滤波器的传递函数进行反演,得到形如以下的表达式:
H1(z) = 1 / (1 - D1*z^-1)
3. 将所有反演后的一阶滤波器的传递函数串联起来,得到并联型数字滤波器的系统函数:
H(z) = H1(z) * H2(z) * ... * Hn(z)
4. 在MATLAB中,可以使用以下代码实现以上步骤:
% 定义直接型数字滤波器系统函数H(z)
H = tf([0.5 0.5], [1 -0.6]);
% 将H(z)进行部分分式分解
[r, p, k] = residue([0.5 0.5], [1 -0.6]);
% 对每个一阶滤波器的传递函数进行反演
for i = 1:length(r)
H_i(i) = tf([1], [1 -p(i)]);
end
% 将所有反演后的一阶滤波器的传递函数串联起来,得到并联型数字滤波器的系统函数
H_parallel = H_i(1);
for i = 2:length(r)
H_parallel = H_parallel * H_i(i);
end
% 打印并联型数字滤波器的系统函数
H_parallel