大家好,欢迎来到IT知识分享网。
@数字处理仿真与应用实验二:模拟低通 Butterworth 滤波器 IIR 滤波器(Matlab)
这学期数字处理仿真与应用实验的记录
不多说,进入正题吧~
实验要求
利用模拟滤波器原型设计 IIR 滤波器,即设计一模拟低通 Butterworth 滤波器,
要求:
通带截止频率: fp =5000Hz 带内最大衰减:Rp =3dB
阻带截止频率: fs =10000Hz 带内最小衰减:Rs =60dB
实验准备
设置滤波器参数
1.打开filter Designer
2.设置滤波器参数如图
3.保存文件为d.m (这个名字是自己随便命名的哦!!!)
实验代码
d为通过matlab的filter designer 设计的巴特沃斯低通滤波器生成的.m文件里面的内容
function Hd = d
%D Returns a discrete-time filter object.
% MATLAB Code
% Generated by MATLAB(R) 9.5 and DSP System Toolbox 9.7.
% Generated on: 22-May-2020 19:15:31
% Butterworth Lowpass filter designed using FDESIGN.LOWPASS.
% All frequency values are in Hz.
Fs = 48000; % Sampling Frequency
Fpass = 5000; % Passband Frequency
Fstop = 10000; % Stopband Frequency
Apass = 3; % Passband Ripple (dB)
Astop = 60; % Stopband Attenuation (dB)
match = 'stopband'; % Band to match exactly
% Construct an FDESIGN object and call its BUTTER method.
h = fdesign.lowpass(Fpass, Fstop, Apass, Astop, Fs);
Hd = design(h, 'butter', 'MatchExactly', match);
% [EOF]
%---------------------%
%------数字信号处理仿真第二次实验------%
%---------------------%
%程序功能:
%----------1.利用模拟滤波器原型设计 IIR 滤波器,即设计一模拟低通 Butterworth 滤波器,
%------------要求: 通带截止频率: fp =5000Hz 带内最大衰减:Rp =3dB 阻带截止频率: fs =10000Hz 带内最小衰减:Rs =60dB
%参考文献:《信号处理matlab》
%编程人员:就酱
%编程更新时间:2020年5月22日
clc;
clear all;
close all;
%-----------参数设置------------%
N=1000; Fs=50000;
T=1/Fs; Tp=N*T;
t=0:T:(N-1)*T;
k=0:N-1; f=k/Tp;
f_1=4000; f_2=9000;
xt1=3*cos(2*pi*f_1*t+0.5);
xt2=4*cos(2*pi*f_2*t+0.8);
%-----------原信号------------%
y=xt1+xt2;
subplot(421);plot(t,y,'m');grid on;title('图一:原信号的波形');
xlabel('t/s');ylabel('y(t)');
fxt=fft(y,N);
subplot(422);stem(f,abs(fxt)/max(abs(fxt)),'m');grid on;
axis([0,max(f),0,1.5]);title('图二:原信号的频谱');
xlabel('f/Hz');ylabel('幅度');
%-----------通过巴特沃斯低通滤波后的信号----------%
y_out=filter(d,y);
% 注意哦: d为通过matlab的filter designer 设计的巴特沃斯低通滤波器生成的.m文件
% 注意哦: d为通过matlab的filter designer 设计的巴特沃斯低通滤波器生成的.m文件
% 注意哦: d为通过matlab的filter designer 设计的巴特沃斯低通滤波器生成的.m文件
subplot(423);plot(t,y_out,'m'); grid on; title('图三:巴特沃斯低通滤波后的波形');
xlabel('t/s');ylabel('y.out(t)');
fout = fft(y_out);
subplot(424);stem(abs(fout),'m');grid on; title('图四:巴特沃斯低通滤波后的频谱');
xlabel('f/Hz');ylabel('幅度');
%-----------高斯白噪声------------%
y1 = wgn(100,1,0);
subplot(425);plot(y1,'m');grid on;title('图五:高斯白噪声的波形');
YfreqDomain = fft(y1);
subplot(426);stem(abs(YfreqDomain),'m');grid on;title('图六:高斯白噪声的频谱');
%-----------加噪声后通过滤波器------------%
y1_out=filter(d,y1);
subplot(427);plot(y1_out,'m'); grid on;title('图七:加噪声滤波后波形');
xlabel('t/s');ylabel('y1.out(t)');
Y1_f = fft(y1_out);
subplot(428);stem(abs(Y1_f),'m');grid on;title('图八:噪声滤波后的频谱');
xlabel('f/Hz');ylabel('幅度');
实验结果
实验结果分析
图一为生成的原始信号波形 ,图二为原始信号的频谱,可以看出有四个突起
图三为巴特沃斯低通滤波后的波形,可以看出毛刺明显减少
图四为巴特沃斯低通滤波后的频谱,可以看到已经滤除两个高频成分
图五为高斯白噪声的波形,图六为高斯白噪声的频谱
图七为加噪声滤波后波形,可以看出平滑不少
图八为噪声滤波后的频谱,可以看出频谱的曲线与最开始设计的滤波器的幅频响应的曲线相似。
实验总结(口水话)
这次实验是耗时最久的一个实验,原因在于要克服以下几个难点
1.设计滤波器
在于刚开始没有仔细读实验指导书,没有看到是要求用matlab自带的滤波器设计器来完成对滤波器的设计,网上找了很多巴特沃斯低通滤波器的设计,已经将程序编好了。这个时候才看到指导书说要用滤波器设计器来搞,又在网上百度了很久如何使用,可是还是不会调用在.m 文件中,最后问的同学才搞定的
吸取了教训,以后先认真看了实验指导书再动手写程序,要不然做完了又重新来一道,太恼火了!
2.加高斯白噪声
这个完全是百度来的,还是用了一点时间来消化这个函数的运用的
3.细节处理
本次实验我打算用8个图像来验证,在标题呀,栅格呀,横轴坐标的表示上就需要多加仔细,需要多多注重细节。
总的来说本次实验是上学期数字信号处理的学过的内容,可是经过一学期基本都忘光了,重新看到滤波器设计的原理的时候还是回想起来一点点,然后百度一下函数怎么使用,还是可以完成本次实验的。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/26516.html