【語音去噪】基於matlab最小二乘法(LMS)自適應濾波器【含Matlab原始碼 481期】
阿新 • • 發佈:2021-06-28
一、簡介
二、原始碼
%該程式實現時域LMS演算法,並用統計的方法模擬得出不同步長下的收斂曲線 clear % 清空變數空間 close all g=100; % 統計模擬次數為g N=1024; % 輸入訊號抽樣點數N k=128; % 時域抽頭LMS演算法濾波器階數 pp=zeros(g,N-k); % 將每次獨立迴圈的誤差結果存於矩陣pp中,以便後面對其平均 u=0.001; for q=1:g t=1:N; a=1; s=a*sin(0.05*pi*t); % 輸入單頻訊號s figure(1); subplot(311) plot(t,real(s)); % 訊號s時域波形 title('訊號s時域波形'); xlabel('n'); ylabel('s'); axis([0,N,-a-1,a+1]); xn=awgn(s,3); % 加入均值為零的高斯白噪聲,信噪比為3dB % 設定初值 y=zeros(1,N); % 輸出訊號y y(1:k)=xn(1:k); % 將輸入訊號xn的前k個值作為輸出y的前k個值 w=zeros(1,k); % 設定抽頭加權初值 e=zeros(1,N); % 誤差訊號 % 用LMS演算法迭代濾波 for i=(k+1):N XN=xn((i-k+1):i); y(i)=w*XN'; e(i)=s(i)-y(i); w=w+u*e(i)*XN; end pp(q,:)=(e(k+1:N)).^2; end subplot(312) plot(t,real(xn)); % 訊號s時域波形 plot(t,real(y)); % 訊號s時域波形 title('自適應濾波後的輸出時域波形'); for b=1:N-k bi(b)=sum(pp(:,b))/g; % 求誤差的統計平均 end
三、執行結果
四、備註
版本:2014a
完整程式碼或代寫加1564658423