Matlab freqz计算FIR Z变换会不会有问题。。

Matlab freqz计算FIR Z变换会不会有问题。。

题目: 系统h(n)在z=0.92有一个零点,画出h(n)幅频响应图。
解:

H ( z ) = z − 0.92 = 1 − 0.92 z − 1 z − 1 H(z)=z-0 . 92=\frac{1-0.92 z^{-1}}{z^{-1}} H(z)=z0.92=z110.92z1
根据经验,可以使用 freqz 函数
freqz返回数字滤波器的包含 p 个点的复频率响应 H ( e j ω ) H\left(e^{j \omega}\right) H(ejω)

[h,w] = freqz(b,a,p);

H ( e j ω ) = b ( 1 ) + b ( 2 ) e − j ω + … + b ( n + 1 ) e − j ω n a ( 1 ) + a ( 2 ) e − j ω + … + a ( m + 1 ) e − j ω m H\left(e^{j \omega}\right)=\frac{b(1)+b(2) e^{-j \omega}+\ldots+b(n+1) e^{-j \omega n}}{a(1)+a(2) e^{-j \omega}+\ldots+a(m+1) e^{-j \omega m}} H(ejω)=a(1)+a(2)ejω++a(m+1)ejωmb(1)+b(2)ejω++b(n+1)ejωn

对本题,按道理讲,b、a应该为

b = [1 -0.92];
a = [0 1];

但运行出错,Denominator must have non-zero leading coefficient.

如果,

b = [1 -0.92];
a = [1];

其对应的 H ′ ( z ) H'(z) H(z)
H ′ ( z ) = 1 − 0.92 z − 1 1 = z − 0.92 z ≠ H ( z ) H'(z)=\frac{1-0.92 z^{-1}}{1}=\frac{z-0.92}{z} \neq H(z) H(z)=110.92z1=zz0.92=H(z)
说明用freqz算出来的值 H ′ ( z ) H'(z) H(z)不是题目中的 H ( z ) H(z) H(z)
试一下直接用 H ( e j ω ) H\left(e^{j \omega}\right) H(ejω)写代码:

clc;clear;clf;close all
%-----------用freqz画幅频响应----------------
b1 = [1 -0.92];a1 = [1];           
N  = 64;  
figure
zplane(b1,a1);title('h1零极点图');
% 返回量H1包含了离散系统对应区间内N个频率等分点的频率响应,w为N个频率等分点的值。
% 'whole'表示区间在[0:2*pi]
[H1,w]  = freqz(b1,a1,N,'whole');  
H1_abs  = abs(H1);
figure
plot(w/pi,H1_abs);title('幅频响应1');xlabel('w/pi');ylabel('|H1|');
grid on
%-----------直接用公式画幅频响应----------------
w   = (0:2/N:2-2/N)*pi;
z   = exp(1i*w);			%z=ejw
H2  = z-0.92;
d_H = abs(H2.')-abs(H1); 	%freqz与公式计算结果的差距
figure
plot(w/pi,abs(H2));title('幅频响应2');xlabel('w/pi');ylabel('|H2|');
grid on

freq画的图

直接画
长得差不多…
d_H的值如下,值很小约为0,说明
[H1,w] = freqz(b1,a1,N,'whole');H2 = z-0.92;约等。

5.55111512312578e-17
-5.55111512312578e-17
-5.55111512312578e-17
0
0
0
0
-1.11022302462516e-16
-1.11022302462516e-16
-1.11022302462516e-16
-1.11022302462516e-16
0
0
0
-2.22044604925031e-16
-2.22044604925031e-16
0
2.22044604925031e-16
0
0
2.22044604925031e-16
0
0
-2.22044604925031e-16
0
0
-2.22044604925031e-16
2.22044604925031e-16
0
0
0
0
2.22044604925031e-16
0
0
2.22044604925031e-16
0
2.22044604925031e-16
0
0
4.44089209850063e-16
0
2.22044604925031e-16
4.44089209850063e-16
2.22044604925031e-16
2.22044604925031e-16
0
2.22044604925031e-16
2.22044604925031e-16
0
2.22044604925031e-16
-2.22044604925031e-16
1.11022302462516e-16
3.33066907387547e-16
-2.22044604925031e-16
2.22044604925031e-16
5.55111512312578e-16
0
2.77555756156289e-16
6.10622663543836e-16
1.11022302462516e-16
3.60822483003176e-16
-2.77555756156289e-17
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值