📄 q713.m
字号:
%《MATLAB及在电子信息课程中的应用》第七章例7.13程序q713
% IIR滤波器实现及FT的时域卷积定理验证
% 电子工业出版社出版 陈怀琛 吴大正 高西全合著 2001年10月初版,2003年7月第二版
%
clear;close all
%
%产生输入信号x(n)
n=0:255;N=4096;
x=cos(0.04*pi*n)+cos(0.08*pi*n)+cos(0.4*pi*n);
w=randn(size(x));%产生正态零均值噪声
x=x+0.3*w;
%
%求H(z)分子分母多项式系数向量B和A
b=[1,2,1]; % (1+z^-1)^2 的展开系数
B=0.0003738*conv(conv(b,b),b); % 嵌套调用卷积函数conv
a1=[1,-1.2686,0.7051];
a2=[1,-1.0106,0.3583];
a3=[1,-0.9044,0.2155];
A=conv(conv(a1,a2),a3);
y=filter(B,A,x); % 对x(n)滤波
% 绘图
X=fft(x,N);
Y=fft(y,N);
subplot(3,2,1);stem(x,'.')
set(gcf,'color','w') % 设置图形背景色为白色
axis([0,max(n)/4,min(x),max(x)]);line([0,max(n)],[0,0])
title('输入信号x(n)');xlabel('n');ylabel('x(n)')
subplot(3,2,5);stem(y,'.')
axis([0,max(n)/4,min(y),max(y)]);line([0,max(n)],[0,0])
title('输出信号 y(n)');xlabel('n');ylabel('y(n)')
k=0:N-1;f=2*k/N;
subplot(3,2,2);plot(f,abs(X))
title('输入信号x(n)的幅频曲线');xlabel('ω/π');ylabel('|FT[x(n)]|')
axis([0,0.5,0,max(abs(X))]);
subplot(3,2,6);plot(f,abs(Y))
title('输出信号y(n)的幅频曲线');xlabel('ω/π');ylabel('|FT[y(n)]|')
axis([0,0.5,0,max(abs(Y))]);
[h,f]=freqz(B,A,N,'whole');
figure(2)
subplot(3,2,1);plot(f/pi,abs(h))
title('滤波器幅频响应曲线');xlabel('ω/π');ylabel('H幅度')
axis([0,0.5,0,max(abs(h))]);
Ym=h'.*X;
subplot(3,2,2);plot(f/pi,abs(Ym))
title('|FT[x(n)]FT[h(n)]|');xlabel('ω/π');ylabel('Ym幅度')
axis([0,0.5,0,max(abs(Ym))]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -