?? lms_cancellationpram.m
字號:
%自適應噪聲抵消matlab編程實現—lms實現
clear all;
r1=wavread('C:\MATLAB6p5p1\work\sound1.wav'); %讀入含噪語音信號
r2=wavread('C:\MATLAB6p5p1\work\noise.wav'); %讀入噪聲信號
r1=r1(1:30000); %取語音信號-寫成行向量1*30000
r2=r2(1:30000); %取噪聲信號-寫成行向量1*30000
figure(1); %畫出語音信號的時域圖形
plot(r1,'b');
xlabel('t');
ylabel('value of sound1');
title('sound1');
figure(2); %畫出噪聲信號的時域圖形
plot(r2,'b');
xlabel('t');
ylabel('value of noise');
title('noise');
k=64;
N=size(r1);
N=length(r1);
error=zeros(N,1); %誤差矩陣N*1
db_error=error;
output=zeros(N,1);
mu=0.01;
win=zeros(k,1);
for i=k:N
input1=r1(i);
input2=r2(i:-1:i-k+1);
e=input1-input2*win; %迭代(Matrix dimensions must agree)
output(i)=e; %最后的 語音輸出
win=win+2*mu*e*input2'; %win 是列向量 input2 是行向量 維數不一致
error(i)=error(i)+e^2;
end;
wavwrite(output,'cancelloutput_lms.wav');
figure(3); %畫出抵消的誤差信號變化的時域圖形
db_error=10*log10(error);
plot(db_error,'b');
xlabel('t');
ylabel('value of db_error');
title('db_error');
figure(4); %畫出抵消后的語音信號的時域圖形
plot(output,'b');
xlabel('t');
ylabel('value of output');
title('output');
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -