[最適化アルゴリズム]改良された固定ステップ長と可変ステップ長のLMSアルゴリズム[Matlabソースコード629期間を使用]

1.はじめに

最小平均二乗(LMS、最小平均二乗)は、最も基本的な適応フィルタリングアルゴリズムです。
LMSアルゴリズムは、適応フィルターで一般的に使用されるアルゴリズムです。Wienerアルゴリズムとの違いは、システムの係数が入力シーケンスによって変化することです。Wienerアルゴリズムでは、入力シーケンスの自己相関関数のセクションがインターセプトされて、システムの最適な係数が構築されます。LMSアルゴリズムは、最小平均二乗誤差基準に従って初期化されたフィルター係数を継続的に修正することによって実装されます。したがって、理論的には、LMSアルゴリズムのパフォーマンスは、同じ条件下でWienerよりも優れています。ただし、LMSは初期値の下で徐々に調整されるため、システムが安定する前に調整時間の期間があります。調整時間はステップサイズ係数によって制御されます。一定の範囲内では、ステップサイズ係数が大きくなります。 、調整時間は短く、ステップサイズ係数の最大値はRのトレースです。LMSは、最小平均二乗誤差の原理ではなく最小二乗誤差の原理を採用しており、基本的な信号の関係は次のとおりです。
ここに画像の説明を挿入
ここに画像の説明を挿入

第二に、ソースコード

clear all
clc              
t=0:1/1000:100-1/1000;
s=15*sin(0.15*pi*t);
snr=10;
s_power=var(s);              %var函数: 返回方差值
linear_snr=10^(snr/10);
factor=sqrt(s_power/linear_snr);
noise=randn(1,length(s))*factor;
%noise=wgn(1,length(s),factor);
x=s+noise;                   %由SNR计算随机噪声
x1=noise;                    %噪声源输入
x2=noise;
%x3=noise;
w1=0;                       %权系数初值
w2=0;
%w3=0;
e=zeros(1,length(x));
error=zeros(1,length(x));
y=0;
%mu=0;
mu=0.000009;                 
for i=1:100000                 %定步长LMS算法
    y=w1*x1(i)+w2*x2(i);%+w3*x3(i);
    e(i)=x(i)-y;
    error(i)=s(i)-e(i);
 %   ee=error^2;
 %   mu=xuanze(mu,ee);
    w1=w1+mu*e(i)*x1(i);
    w2=w2+mu*e(i)*x2(i);
  %  w3=w3+mu*e(i)*x3(i);
end
figure(1)
subplot(4,1,1)
plot(t,s);
title('纯正弦信号')
subplot(4,1,2)
plot(t,x);
title('带噪声正弦信号')
axis([0 100 -30 30]);
subplot(4,1,3)
plot(t,noise);
title('噪声信号')
axis([0 100 -30 30]);
subplot(4,1,4)
plot(t,e);
title('定步长LMS算法自适应噪声对消器')
axis([0 100 -30 30]);
wu=error;
figure(2)
subplot(3,1,1);
plot(wu);
title('定步长LMS算法收敛过程')







%自适应噪声对消器
clear all
clc              
t=0:1/1000:100-1/1000;
s=15*sin(0.15*pi*t);
snr=10;
s_power=var(s);              %var函数: 返回方差值
linear_snr=10^(snr/10);
factor=sqrt(s_power/linear_snr);
noise=randn(1,length(s))*factor;
x=s+noise;                   %由SNR计算随机噪声
x1=noise;                    %噪声源输入
x2=noise;
w1=0;                       %权系数初值
w2=0;
e=zeros(1,length(x));
error=zeros(1,length(x));
y=0;
mu=0;
%mu=0.05;                 
for i=1:100000                 %变步长LMS算法
    y=w1*x1(i)+w2*x2(i);
    e(i)=x(i)-y;
     error(i)=s(i)-e(i);
    ee=error(i)^2;
    if ee>0.0005;
        ee=0.0005;
    end
    mu=xuanze(mu,ee);
    w1=w1+mu*e(i)*x1(i);
    w2=w2+mu*e(i)*x2(i);   
end
figure(3)
subplot(4,1,1)
plot(t,s);
title('纯正弦信号')
subplot(4,1,2)
plot(t,x);
title('带噪声正弦信号')
axis([0 100 -30 30]);
subplot(4,1,3)
plot(t,noise);
title('噪声信号')
axis([0 100 -30 30]);
subplot(4,1,4)
plot(t,e);
title('变步长LMS算法自适应噪声对消器')
axis([0 100 -30 30]);
wu=error;
figure(2)
subplot(3,1,2);
plot(wu);
title('变步长LMS算法收敛过程')





%自适应噪声对消器
clear all
clc              
t=0:1/1000:100-1/1000;
s=15*sin(0.15*pi*t);
snr=10;
s_power=var(s);              %var函数: 返回方差值
linear_snr=10^(snr/10);
factor=sqrt(s_power/linear_snr);
noise=randn(1,length(s))*factor;
x=s+noise;                   %由SNR计算随机噪声
x1=noise;                    %噪声源输入
x2=noise;
w1=0;                       %权系数初值
w2=0;
e=zeros(1,length(x));
error=zeros(1,length(x));
y=0;
mu=0;
%mu=0.05;                 
for i=1:100000                 %改进变步长LMS算法
    y=w1*x1(i)+w2*x2(i);
    e(i)=x(i)-y;
    
   ee=exp(abs(error(i))^3)-1;
 %  ee=error^4; 
   
      
   end    
    mu=xuanze(mu,ee);
    w1=w1+mu*e(i)*x1(i);
    w2=w2+mu*e(i)*x2(i);   
end
figure(4)
subplot(4,1,1)
plot(t,s);
title('纯正弦信号')
subplot(4,1,2)
plot(t,x);
title('带噪声正弦信号')
axis([0 100 -30 30]);
subplot(4,1,3)
plot(t,noise);
title('噪声信号')
axis([0 100 -30 30]);
subplot(4,1,4)
plot(t,e);
title('改进变步长LMS算法自适应噪声对消器')
axis([0 100 -30 30]);

3、実行中の結果

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

四、備考

完全なコードまたは書き込み追加QQ1564658423過去のレビュー
>>>>>>
[ワークショップスケジューリング] Matlab粒子群ベースのワークショップスケジューリング[Matlabソースコード013を含む]
[ワークショップスケジューリング] Matlab遺伝子アルゴリズムに基づいてGUIでワークショップスケジューリングモデルを解決[Matlabソースコード049を含める]
[ワークショップスケジューリング]ワークショップスケジューリングを解決するためのmatlab遺伝子アルゴリズムに基づく[Matlabソースコード070を含める]
[ワークショップスケジューリング]ワークショップスケジューリングを解決するためのmatlabnsgaIIに基づく[Matlabソースコード071期間を含む]
[ワークショップスケジューリング]ワークショップスケジューリング問題を解決するためのmatlabアルゴリズムに基づく改良されたleapfrog [Matlabソースコード073を含む]
[ワークショップスケジューリング]交換フローショップスケジューリング問題を解決するためのmatlabに基づく[Matlabソースコード176を含む]
[ワークショップスケジューリング] matlabPSOに基づく6X6ワークショップスケジューリングの問題を解決する[Matlabソースコード411を含む
] [ワークショップスケジューリング] Matlab粒子群ベースの生産スケジューリング[Matlabソースコード412を含む]
[ワークショップスケジューリング] Matlab遺伝子アルゴリズムベースの多目的フローショップスケジューリング[Matlabソースコード443を含む]
[最適化] matlabパーティクルスウォームマイクログリッドに基づく多目的最適化[Matlabソースコード444を含む]
[最適化]多目的最適化問題を解決するためのmatlabトンボアルゴリズムに基づく[Matlabソースコード477を含む]
[最適化アルゴリズム]海洋捕食者アルゴリズム(MPA)[Matlabソースコード478を含む]
[最適化アルゴリズム]ブラックホールシミュレーションアルゴリズム(MVO)[Matlabソースコード479を含む]
[最適化アルゴリズム]突然変異戦略に基づく改良された花花粉アルゴリズム[Matlabソースコード480を含む]
[最適化ソリューション]水熱発電の経済的ディスパッチを解決するためのmatlab粒子群アルゴリズムに基づく[Matlabソースコード500期間を含む]
[最適化ソリューション]スズメ検索アルゴリズムに基づく3Dワイヤレスセンサーネットワーク(WSN)カバレッジ最適化[Matlabソースコード期間を含む599]
[最適化ソリューション]多目的分散ネットワーク再構築モデルを解決するための遺伝的アルゴリズムに基づく[Matlabソースコード622を含む]

おすすめ

転載: blog.csdn.net/TIQCmatlab/article/details/115220979