我必须创建一个函数G(z) = [3*H^2(z)-2H^3(z)]*(z^-2)
,该函数将滤波器H(z)的脉冲响应作为输入,并输出G(z)的脉冲响应。
我假设H(z)是通用FIR滤波器
b = fir1(10,0.5);
h = impz(b);
t = impzlength(b);
h
脉冲响应的值在哪里?我认为H^2(z) = h(n).*z(-2n)
和H^3(z) = h(n).*z^(-3n)
; H(z)
是过滤器的传递函数。
我现在必须计算方程式的num和den的系数,但是我陷入了困境。我以为首先使用coeffs
for循环,但我也需要零系数,而coeffs
只提供非零系数。
现在,我认为也许有一种变通的方法来获取系数:基本上我只需要选择的某些值h
。例如,仅获取以下项的系数z^-3n
:
n = 3;
y = h(n:n:end); % = 3 6 9 12 ...
但现在我无法弄清楚如何恰当地总结系数的z^-3n
和z^-2n
。
除非您使用的是非标准符号,H^2(z)
否则不是h(n).*z(-2n)
而是将多项式与系数相乘h
。可以用以下公式计算:
H2 = conv(h, h);
同样,H^3(z)
可以使用以下方法计算:
H3 = conv(H2, h);
然后,对多项式求和可归结为对系数求和,唯一需要注意的H2
是,两个系数向量的大小相同:
H2 = [H2 zeros(1,length(H3)-length(H2))];
S = 3*H2 -2*H3;
最终的乘以z^(-2)
(可以由多项式系数表示[0 0 1]
)可以通过conv
与with相同的方式实现:
G = conv(S, [0 0 1 zeros(1,length(Sum)-3)]);
或者,您可能会意识到,乘以一个多项式多项式本质上等效于移位系数:
G = [0 0 S];
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句