?? lms.m
字號(hào):
g=100; % 統(tǒng)計(jì)仿真次數(shù)為g
N=1024; % 輸入信號(hào)抽樣點(diǎn)數(shù)N
k=128; % 時(shí)域抽頭LMS算法濾波器階數(shù)
pp=zeros(g,N-k); % 將每次獨(dú)立循環(huán)的誤差結(jié)果存于矩陣pp中,以便后面對(duì)其平均
u=0.0002;
for q=1:g
t=1:N;
a=1;
s=a*sin(0.05*pi*t); % 輸入單頻信號(hào)s
figure(1);
subplot(311)
plot(t,real(s)); % 信號(hào)s時(shí)域波形
title('信號(hào)s時(shí)域波形');
xlabel('n');
ylabel('s');
axis([0,N,-a-1,a+1]);
xn=awgn(s,5); % 加入均值為零的高斯白噪聲,信噪比為3dB
% 設(shè)置初值
y=zeros(1,N); % 輸出信號(hào)y
y(1:k)=xn(1:k); % 將輸入信號(hào)xn的前k個(gè)值作為輸出y的前k個(gè)值
w=zeros(1,k); % 設(shè)置抽頭加權(quán)初值
e=zeros(1,N); % 誤差信號(hào)
% 用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)); % 信號(hào)s時(shí)域波形
title('信號(hào)s加噪聲后的時(shí)域波形');
subplot(313)
plot(t,real(y)); % 信號(hào)s時(shí)域波形
title('自適應(yīng)濾波后的輸出時(shí)域波形');
for b=1:N-k
bi(b)=sum(pp(:,b))/g; % 求誤差的統(tǒng)計(jì)平均
end
figure(2); % 算法收斂曲線
t=1:N-k;
plot(t,bi,'r');
hold on % 將每次循環(huán)的圖形顯示結(jié)果保存下來
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -