[最適化アルゴリズム]改良されたLMSアルゴリズム-SVSLMSアルゴリズム[Matlabソースコード632期間を含む]

1.はじめに

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

第二に、ソースコード

%%------------------- 定义变量:----------------------%%
% N - # of elements in array                                  %
% d - 阵元间距                          %
% ang - theta in deg                                          %
% thetaS - 期望用户波达角                             %
% thetaI - 干扰波达角                              %
% T - 期望信号的周期                               %
% t - 期望信号的时间轴                            %
% S - 期望信号                                        %
% I - 干扰信号                                    %
% vS,vI - 期望用户和干扰用户的转移矢量   %
% X - 总阵列因子                                     %
% Rxx - 总接收信号相关矩阵             %
% mu - 收敛参数                                  %
% w - 用LMS算法确定的均匀线阵权值          %
% x - 总接收信号                                   %
% y - 阵列输出                                            %
% e - 阵列输出和期望信号的误差           %
% theta - range of AOA's (rad)                                %
% AF - 加权阵列输出                                  %
%%-----------------------------------------------------------%%

%%----- 赋值-----%%

N = 8; d =0.5; 

thetaS = 30*pi/180; thetaI = -60*pi/180;%期望信号方向30. 干扰-60.%

%%----- 期望和干扰信号-----%%

T = 1E-3; t = (1:100)*T/100; it = 1:100;%1E-3表示1ms%

S = cos(2*pi*t/T); %,此时,S已经是一个矩阵!1100列


I = randn(1,100);%生成1100列的正态分布随机矩阵%
  
%%----- 为每个用户的线性阵列信号创建的阵列因子 -----%%

vS = []; vI = [];
i = 1:N;
vS = exp(1j*(i-1)*2*pi*d*sin(thetaS)).';%’表示厄米特转置,产生N行1列的阵列向量,然后后面在此基础上乘以信号就得到天线每个阵元接收到的信号
vI = exp(1j*(i-1)*2*pi*d*sin(thetaI)).';

%%----- 用LMS解决权值 -----%%

w = zeros(N,1);%初始天线阵权值全为0%
X = vS + vI;
Rxx = X*X';%X'为X的厄米特转置%
mu = 1/(4*abs(trace(Rxx)));%trace,迹%

wi = zeros(N,max(it));%初始权值都为0%
for n = 1:length(S)%n是迭代次数?%
    x = S(n)*vS + I(n)*vI;
    y(n) = w'*x;
    e = conj(S(n)) - y(n);     esave(n) = abs(e)^2;%conj,求复数的共轭%
    nu=mu*(1-exp(-(abs(e))^2));
    w = w + nu*conj(e)*x;
    wi(:,n) = w;
end               %没有判断收敛,要判断是从误差收敛曲线来看
w = w/w(1);    % 第一权值的规范解%

%%----- 显示权值 -----%%

disp(' ')
disp('%------------------------------------------------------------------------%')
disp(' ')
disp(['    N = ',num2str(N),' 的权值是:'])
disp(' ')
for m = 1:length(w)
    disp(['   w',num2str(m),' = ',num2str(w(m),3)])
end
disp(' ')

%%----- 输出结果 -----%%

% 1.) Plot 权重与迭代次数

wi = wi.';
figure(1), plot(it,abs(wi(:,1)),'kx',it,abs(wi(:,2))...
    ,'ko',it,abs(wi(:,3)),'ks',it,abs(wi(:,4)),'k+',...
    it,abs(wi(:,5)),'kd','markersize',2)
xlabel('Iteration no.'), ylabel('|weights|')
title('\bf  阵列权值')

% 2.) Plot 信号采集和跟踪

figure(2)
plot(it,S,'k',it,real(y),'k--')
xlabel('迭代次数'), ylabel('Signals')
title('\bf  期望信号采集与跟踪')
legend('期望信号','阵列输出')

% 3.) Plot 最小均方误差

figure(3), plot(it,esave,'k')
xlabel('Iteration no.'), ylabel('|e|^2')
title('\bf 均方误差与迭代次数.')

% 4.) Plot 阵列因子

theta = -pi/2:.01:pi/2;
AF = 0;
for i = 1:N
    AF = AF + w(i)'.*exp(j*(i-1)*2*pi*d*sin(theta));
end

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を含む]
[最適化アルゴリズム]改良された固定ステップおよび可変ステップサイズLMSアルゴリズム[Matlabソースコード629を含む]
[最適化アルゴリズム]改良されたLMSアルゴリズム[Matlabソースコード630期間を含む]
[最適化アルゴリズム]改良されたLMSアルゴリズム-NLMSアルゴリズム[Matlabソースコード631期間を含む]

おすすめ

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