clear all
close all
N=5; %濾波器階數
sample_N=1000; %采樣點數
A=1; %信號幅度
snr=10; %信噪比
t=1:sample_N;
length_t=100; %期望信號序列長度
d=A*sin(2*pi*t/length_t); %期望信號
M=length(d); %M為接收資料長度
x=awgn(d,snr); %經過信道(加噪聲)
delta=1/(10*N*(A^2)); %計算能夠使LMS演算法收斂的delta
y=zeros(1,M);
h=zeros(1,N); %LMS濾波器系數
h_normalized=zeros(1,N); %歸一化LMS濾波器系數
y1=zeros(1,N);
for n=N:M %系數調整LMS演算法
x1=x(n:-1:n-N+1);
%LMS演算法
y(n)=h*x1';
e(n)=d(n)-y(n);
h=h+delta*e(n)*x1;
%NLMS演算法
y_normalized(n)=h_normalized*x1';
e_normalized(n)=d(n)-y_normalized(n);
h_normalized=h_normalized+e_normalized(n)*x1/(x1*x1');
end
error=e.^2; %LMS演算法每一步迭代的均方誤差
error_normalized=e_normalized.^2; %NLMS演算法每一步迭代的均方誤差
for n=N:M %利用求解得到的h,與輸入信號x做卷積,得到濾波后結果
x2=x(n:-1:n-N+1);
y1(n)=h*x2';
y2(n)=h_normalized*x2';
end
subplot(411)
plot(t,d);
axis([1,sample_N,-2,2]);
subplot(412)
plot(t,x);
subplot(413)
plot(t,y);
subplot(414)
plot(t,y_normalized);
figure(2)
plot(t,error,'r',t,error_normalized,'b');
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/284900.html
標籤:圖形處理/算法
上一篇:Activex 組件被攔截
