資源簡介
各種自適應算法 LMS NLMS VSLMS VSNLMS RLS 的matlab仿真 在回波消除中的應用仿真 并有PPT介紹

代碼片段和文件信息
function?[input_signal?error_signal?desired_signal?filter_output?impulse?filter_current?mse?db?db_avg]=LMS(filter_size?step_size?input_file?iterations)
%?Function?to?perform?the?LMS?algorithm?on?an?input?file.
%?Inputs:???Filter?order?step?size?input?wav?file?number?of?iterations.
%?Outputs:??Input?signal?error?estimation?signal?(echo?cancelled)?desired?signal?(echoed?signal)?adaptive?filter?output?real?impulse?response
%???????????Estimation?of?impulse?response?mean?sqaure?error?attenuation?(dB)?average?attenuation.
%Read?in?the?input?file
input_signal?=?wavread(input_file30000);
%?Create?the?impulse?response?for?the?desired?signal
impulse=zeros(filter_size1);
for?(i=1:5)?%#ok
????impulse(((i-1)*filter_size/5)+1)=3/i;????
end
%?Convolve?the?impulse?with?the?input?signal?to?generate?the?desired?signal
desired_signal?=?conv(input_signal?impulse);
%?initialise?adaptive?filter?impulse?and?input?vector?to?zero?vector?of?length?specified?at?command?line
filter_current?=?zeros(filter_size1);
input_vector?=?zeros(filter_size?1);
%?Loop?for?number?of?iterations?specified?in?command?line.
for?i=1:iterations;
????%i;#ok
????input_vector(1)=input_signal(i);?????????%?insert?new?sample?at?beginning?of?input?vector.
????filter_output(i)=dot(filter_current?input_vector);??????????%#ok?%Caluclate?adaptive?filter?output
????error=?desired_signal(i)-filter_output(i);???????%?Calculate?estimation?error
????filter_current?=?filter_current?+?2*step_size*error*input_vector;???????%?Update?filter?taps?by?LMS?recursion
????
????%?Shfit?values?ion?vector?along.
????for?j=filter_size:-1:2;
????????input_vector(j)=input_vector(j-1);????
????end
????
????error_signal(i)=error;??????%#ok?%?store?estimation?error
????cost(i)=error*error;????????%#ok?%?calculate?instantaneous?cost?sqaure?error
????
????if?(i==1)
?????????fc0=filter_current;?????%#ok
????end
????if?(i==7500)
?????????fc1=filter_current;?????%#ok
????end
????if?(i==15000)
?????????fc2=filter_current;?????%#ok
????end
????if?(i==22500)
?????????fc3=filter_current;?????%#ok
????end
????if?(i==30000)
?????????fc4=filter_current;?????%#ok
????end
end
%?Find?moving?average?of?error?squared.
for?i=1:iterations-100;
????mse(i)=mean(cost(i:i+100));?%#ok
?????%i#ok
end
%find?moving?avarage?of?db?attenuation?(averaged?to?smooth?output).
for?i=1:iterations-2500;
????db(i)=-20*log10(mean(abs(desired_signal(i:i+2500)))‘./mean(abs(error_signal(i:i+2500))));?%#ok
?????%i;#ok
end
%find?total?avarage?db?attenuation
db_avg=mean(db);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????204346??2010-12-07?20:19??自適應算法\自適應算法\ll.wav
?????文件???????2693??2010-12-07?20:31??自適應算法\自適應算法\LMS.m
?????文件???????2122??2010-12-07?20:48??自適應算法\自適應算法\NLMS.m
?????文件???????2507??2010-12-07?20:54??自適應算法\自適應算法\RLS.m
?????文件???????2847??2010-12-07?21:06??自適應算法\自適應算法\VSLMS.m
?????文件???????2834??2010-12-07?21:14??自適應算法\自適應算法\VSNLMS.m
?????文件?????308424??2011-01-15?17:00??自適應算法\自適應算法\Adaptive_Filter_Design(NO.3).pptx
?????目錄??????????0??2011-01-15?16:54??自適應算法\自適應算法
?????目錄??????????0??2011-01-15?16:59??自適應算法
-----------?---------??----------?-----??----
???????????????525773????????????????????9
- 上一篇:matlab SAR圖像濾波
- 下一篇:遺忘因子遞推最小二乘參數估計MATLAB程序
評論
共有 條評論