MATLAB提供了专门用于求离散系统频响特性的函数freqz(),调用freqz()的格式有以下两种:
(1)[H,w]=freqz(B,A,N)
(2)[H,w]=freqz(B,A,N,'whole')
因此,可以先调用freqz()函数计算系统的频率响应,然后利用abs()和angle()函数及plot()函数,即可绘制出系统在 或 范围内的频响曲线。
绘制如下系统的频响曲线
y(n)=x(n)-x(n-3) %减法滤波器
MATLAB命令如下:
clear all;
clc;
fs=600;
b=[1,0,0,-1];
a=[1];
[h,f]=freqz(b,a,256,fs);
mag=abs(h);
ph=angle(h);
ph=ph*180/pi;
subplot(2,1,1)
plot(f,mag);
grid on
xlabel('频率(Hz)');
ylabel('幅频特性');
subplot(2,1,2)
plot(f,ph);
grid on
xlabel('频率(Hz)');
ylabel('相频特性');
(1)[H,w]=freqz(B,A,N)
(2)[H,w]=freqz(B,A,N,'whole')
(1)中B和A分别为离散系统的系统函数分子、分母多项式的系数向量,返回量H则包含了离散系统频响在 0~pi范围内N个频率等分点的值(其中N为正整数),w则包含了范围内N个频率等分点。调用默认的N时,其值是512。
(2)中调用格式将计算离散系统在0~pi范内的N个频率等分店的频率响应的值。因此,可以先调用freqz()函数计算系统的频率响应,然后利用abs()和angle()函数及plot()函数,即可绘制出系统在 或 范围内的频响曲线。
绘制如下系统的频响曲线
y(n)=x(n)-x(n-3) %减法滤波器
MATLAB命令如下:
clear all;
clc;
fs=600;
b=[1,0,0,-1];
a=[1];
[h,f]=freqz(b,a,256,fs);
mag=abs(h);
ph=angle(h);
ph=ph*180/pi;
subplot(2,1,1)
plot(f,mag);
grid on
xlabel('频率(Hz)');
ylabel('幅频特性');
subplot(2,1,2)
plot(f,ph);
grid on
xlabel('频率(Hz)');
ylabel('相频特性');