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)=z−0.92=z−11−0.92z−1
根据经验,可以使用 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)e−jω+…+a(m+1)e−jωmb(1)+b(2)e−jω+…+b(n+1)e−jω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)=11−0.92z−1=zz−0.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
长得差不多…
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