在Matlab中计算FIR滤波器的系数

塞缪尔·康奈尔

我必须创建一个函数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的系数,但是我陷入了困境。我以为首先使用coeffsfor循环,但我也需要零系数,而coeffs只提供非零系数。

现在,我认为也许有一种变通的方法来获取系数:基本上我只需要选择的某些值h例如,仅获取以下项的系数z^-3n

n = 3; 
y = h(n:n:end);  % = 3 6 9 12 ...

但现在我无法弄清楚如何恰当地总结系数z^-3nz^-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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Matlab FIR滤波器

来自分类Dev

使用MATLAB中的系数在C ++中进行FIR滤波器设计,滤波器未给出正确的结果

来自分类Dev

Matlab中的FIR滤波器

来自分类Dev

FIR滤波器的长度是否包含在截距中作为系数?-Matlab

来自分类Dev

Matlab中的滤波器系数

来自分类Dev

使用 Matlab 从滤波器设计器接收相同的系数

来自分类Dev

如何在交叉滤波器中计算部分总计?

来自分类Dev

C中的FIR滤波器?

来自分类Dev

C中的定点FIR滤波器?

来自分类Dev

CMSIS FIR带通滤波器

来自分类Dev

C ++中的FIR滤波器

来自分类Dev

带通FIR滤波器

来自分类Dev

FIR滤波器的FSM模型

来自分类Dev

C ++ FIR噪声滤波器

来自分类Dev

使用向量实现 FIR 滤波器

来自分类Dev

带firpm的滤波器系数

来自分类Dev

Matlab滤波器矩阵

来自分类Dev

高通滤波器Matlab

来自分类Dev

平均滤波器Matlab

来自分类Dev

频域滤波器vs IIR和FIR滤波器?

来自分类Dev

线性相位FIR陷波滤波器和IIR陷波滤波器

来自分类Dev

MATLAB 中的下采样 - 为什么要缩放滤波器系数?

来自分类Dev

Python:通过窗口进行高通FIR滤波器

来自分类Dev

如何在Gabor滤波器中计算空间频率?

来自分类Dev

Matlab中高斯滤波器的导数

来自分类Dev

超低频滤波器MATLAB

来自分类Dev

使用fft的Matlab低通滤波器

来自分类Dev

在MATLAB中实现均值滤波器

来自分类Dev

Matlab中滤波器的逆FT