武汉理工大学《信息处理课群综合训练与设计》课程设计说明书
参考文献
[1] 刘泉,《信号与系统》, 高等教育出版社, 2006年。 [2] 刘泉,《数字信号处理》,电子工业出版社,2008年。
[3] Edward W. Kamen, Bonnie S.Heck 编,《信号与系统基础——应用Web 和MATLAB(第二版)》,科学出版社,2002 年。
[4]曹斌芳.自适应抵消技术的研究.湖南大学,2007
[5]胡广书.《数字信号处理—理论、算法与实现》. 清华大学出版社,2003 [6]安颖、侯国强.《自适应滤波算法研究与DSP实现》.现代电子技术出版社,2007 [7]刘泉 江雪梅 信号与系统 北京 高等教育出版社 2006
21
武汉理工大学《信息处理课群综合训练与设计》课程设计说明书
附录 源程序
clc;
[source,fs,bits]=wavread('Audio.wav'); noise=0.07*randn(length(source),1); source=source(:,1); source1=source+noise;
wavwrite(noise,fs,'RLSrefns'); wavwrite(source1,fs,'RLSprimsp'); primary=wavread('RLSprimsp.wav'); primary=primary';
fref=wavread('RLSrefns.wav'); fref=fref'; % 初始化
Worder=32; lambda=1 ; Delta=0.001 ; p=(1/Delta) * eye ( Worder,Worder ) ; w=zeros(Worder,1);
output=primary; loopsize=max(size(primary)); for i=1+Worder:loopsize u=fref(i-Worder+1:i)'; e=primary(i)-w'*u; k=(p*u)/(lambda+u'*p*u); w = w + k*e; p= (p-k*u'*p)/lambda; output(i-Worder)=e;
%输出模拟噪声信号 %输出模拟主语音信号 %读入麦克风语音信号%滤波器阶数 % 设置遗忘因子 %主语音输出
%写RLS算法公式 22
武汉理工大学《信息处理课群综合训练与设计》课程设计说明书
end; figure;
[source,fs,bits]=wavread('Audio.wav'); subplot(2,4,1)
plot(source); %画出原音波形 title('原音波形')
source1=fft(source,length(source)); subplot(2,4,5);
plot(abs(source1)); %画出原音频谱 title('原音频谱') %axis([0 8000 0 80]);
[y1,Fs1,bits1]=wavread('RLSprimsp.wav'); subplot(2,4,2)
plot(y1) %画出麦克风主语音波形 title('麦克风主语音波形'); Y1=fft(y1,length(y1));
subplot(2,4,6); plot(abs(Y1)); %画出麦克风主语音频谱 title('麦克风主语音输入频谱'); %axis([0 8000 0 80]);
subplot(2,4,3); plot(fref); %画出噪声语音波形 title('噪声语音波形');
[y2,Fs2,bits2]=wavread('RLSrefns.wav'); Y2=fft(y2,length(y2));
subplot(2,4,7); plot(abs(Y2)); %画出噪声语音频谱 title('噪声语音频谱');
subplot(2,4,4); plot(output); %画降噪后的语音波形 title('降噪后的语音波形');
wavwrite(output,fs,'asd') %生成降噪后的语音 [y,Fs3,bits3]=wavread('asd.wav');
23
武汉理工大学《信息处理课群综合训练与设计》课程设计说明书
Y=fft(y,length(y)); subplot(2,4,8);
plot(abs(Y)); %画出降噪后语音频谱 title('降噪后语音输出频谱'); %axis([0 8000 0 80]); f=1; while f==1
flag=input('请选择输出语音;1:原式语音 2:加噪主语音 3:噪声语音 4:降噪后语音');
switch flag case 1
sound(source,fs,bits); case 2
sound(y1,Fs1,bits1); case 3
sound(y2,Fs2,bits2); case 4
sound(output,Fs3,bits3); end
f=input('是否重新选择? 是 输入1 否 输入0'); end
24