[就酱的新征程]数字处理仿真与应用实验二:模拟低通 Butterworth 滤波器 IIR 滤波器(Matlab)[亲测有效]

[就酱的新征程]数字处理仿真与应用实验二:模拟低通 Butterworth 滤波器 IIR 滤波器(Matlab)[亲测有效]@[就酱的新征程]数字处理仿真与应用实验二:模拟低通Butterworth滤波器IIR滤波器(Matlab)这学期数字处理仿真与应用实验的记录不多说,进入正题吧~实验要求利用模拟滤波器原型设计IIR滤波器,即设计一模拟低通Butterworth滤波器,要求:通带截止频率:fp=5000Hz带内最大衰减:Rp=3dB阻带截止频率:fs=10000Hz带内最小衰减:Rs=60dB实验准备设置滤波器参数1.打开filterDesigner2.设置滤波器参数

大家好,欢迎来到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

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信