基于MATLAB语音信号去噪IIR数字滤波器设计

目录
摘 要 1
Abstract 2
1 绪论 3
1.1 研究背景 3
1.2 国内外研究现状 4
1.2.1 国内研究现状 4
1.2.2 国外研究现状 5
1.3 IIR数字滤波器的设计内容 5
2 数字滤波器的设计与研究 6
2.1 数字滤波器工作原理 7
2.2 数字滤波器分类 7
2.3 IIR数字滤波器基本结构 8
3 IIR数字滤波器的设计 8
3.2 脉冲响应不变法 9
3.3 双线性变换法 10
4 基于MATLAB对IIR数字滤波器的设计 11
4.1 语音信号采集、读取、加噪 13
4.2 模拟滤波器的设计 16
4.3 双线性变换法设计Butterworth数字滤波器 16
4.4 脉冲不变响应法设计Chebyshev I数字滤波器 17
4.5 语音信号滤波处理结果比较 19
5 IIR数字滤波器去噪平台GUI界面设计 19
5.1 IIR数字滤波器去噪平台GUI界面设计流程 20
5.2 IIR数字滤波器去噪平台界面设计 21
5.2.1 原始语音模块设计 22
5.2.2 加噪语音模块设计 25
5.2.3 滤波器模块设计 27
5.2.4 退出模块设计 28
6 总结 29
6.1 滤波器设计中存在的不足 30
6.2 总结以及展望 31
2 数字滤波器的设计与研究

滤波器是对信号进行过滤、参数的估计等线性系统,其是由差分方程作为基本,主要分为两大部分分别为数字滤波器和模拟滤波器,后者是对连续时域信号进行滤波并且由电容电阻以及晶体管等部分组成,前者一般先是将连续时域信号进行抽样得到离散时域信号由计算机进行滤波运算或者采用专门的数字滤波硬件来进行工作。数字滤波器(Digital Filter)即DF又分为两大类即IIR(无限脉冲响应)和FIR(有限脉冲响应)[1],IIR数字滤波器是递归滤波器由闭合回路形成的反馈,是由当前信号、历史输入做为输入,输出信号也会反馈到IIR作为输入信号这样就形成了闭合回路,而FIR只有当前输入数据、历史输入作为输入信号输入到FIR并没有形成反馈(原理框图如图2-1所示)。本文主要以IIR滤波器的设计为主要研究对象并包含GUI界面设计,FIR并未过多的涉及。
在这里插入图片描述

图2-1 两种数字滤波器原理框图


% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
%---------------------------利用函数wavread对语音信号的采集--------------------------------%
global wav_in;
global wav_in_1;
global Fs;
global bits;
global n;
global f1;
[filename pathname]=uigetfile({
    
    '*.wav'}, 'File Selector');
[wav_in,Fs,bits] = wavread([pathname '\' filename]);

handles.wav_in = wav_in;
guidata(hObject, handles);
axes(handles.axes1);
% aa=abs(fftshift(wav_in));
% plot(aa);title('')
N=length(wav_in);
 n=0:N-1;
 plot(n,wav_in);                             %画出原始语音信号的波形
 xlabel('n');
 ylabel('x(n)');
 title('原始语音信号');
 f1=fft(wav_in,N);            %对语音号进行快速傅里叶变换,得出频谱
% GX=fft(wav_in,512);

 sound(wav_in,Fs);
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global wav_in;
global wav_in_1;
global Fs;
global bits;
global n;
global f1;
% SNR=40;
% wav_in=awgn(wav_in,SNR);
 y1=fft(wav_in,512);
  f=Fs*(0:511)/512;
Au=0.03;
 wav_in=wav_in(:,1);
t=0:1/Fs:(size(wav_in)-1)/Fs;%将所加噪声信号的点数调整到与原始信号相同
  d=[Au*cos(2*pi*5000*t)]';%噪声为5kHz的余弦信号
  wav_in_1=10*wav_in+d;
   y2=fft(wav_in_1,512);
handles.wav_in = wav_in_1;% ¨¨¨
guidata(hObject, handles);
axes(handles.axes2);
 plot(t,wav_in_1)
 title('加噪后的信号');
 xlabel('time n');
 ylabel('fuzhi n');
  guidata(hObject, handles);
 axes(handles.axes3);
  plot(abs(n),abs(f1));     
  xlabel('k');
  ylabel('|y(k)|');
  title('FFT后的波形');
% guidata(hObject, handles);
% axes(handles.axes3);
%  plot(f,abs(y1(1:512)));
%  title('原始语音信号频谱');
%  xlabel('Hz');
%  ylabel('fuzhi');
guidata(hObject, handles);
axes(handles.axes4);
 plot(f,abs(y2(1:512)));
 title('加噪后的信号频谱');
 xlabel('Hz');
 ylabel('fuzhi');
sound(wav_in_1,Fs);


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/newlw/article/details/131780717