基於matlab的自適應NLMS演算法實現

2021-10-01 11:51:14 字數 870 閱讀 3344

nlms演算法的計算迭代過程與lms演算法基本一致,只是lms演算法中的步長是固定的,

而在nlm演算法步長是可變的,根據輸入訊號動態的調整迭代的步長,已達到較快的和穩定的

收斂過程。

1)給定w(0);

2)計算輸出值:y(k)=w(k)tx(k)y(k)=w(k)tx(k);

3)計算估計誤差:e(k)=d(k)−y(k)e(k)=d(k)−y(k);

4)權重係數更新:w(k+1)=w(k)+

function [w,en]=nlmsfunc(mu,m,xn,dn,a)

% 輸入引數:

% mu = 步長大小 乙個極小的值

% m = 濾波器階數

% xn = 輸入訊號 列向量

% dn = 預期訊號 列向量

% a = 極小的常數

%% 輸出引數:

% w = 濾波器係數 列向量

%輸入訊號長度

itr=length(xn);

%make sure that u and d are colon vectors

w=zeros(m,itr); %this is a vertical column

en = zeros(itr,1);%列向量

w = zeros(m,1);%列向量

%nlms

for k=m:itr

uvec=xn(k:-1:k-m+1);

y= w(:,k-1).'*uvec;

en(k)=dn(k)-y;

w(:,k)=w(:,k-1)+mu/(a+uvec'*uvec)*uvec*en(k);

endw = w(:,end);

基於MPC的自適應巡航控制

關於mpc 模型 控制 網上的理論很多,簡單易懂的,複雜全面的都有。這邊我也記錄一下mpc的學習,主要是通過汽車acc的例子,這裡汽車模型只是簡單的積分器,主要目的還是mpc的乙個應用。中間的相減模組不小心被注釋掉了,不想開啟matlab重新截圖了,因為懶,直接編輯了一下,ahhh 首先分別用兩個積...

自適應中值濾波及matlab實現

常規的中值濾波器,在雜訊的密度不是很大的情況下 根據經驗,雜訊的出現的概率小於0.2 效果不錯。但是當概率出現的概率較高時,常規的中值濾波處理後,仍然具有雜訊點,並丟失了細節和邊緣,效果不是很好。在模板視窗sxy定義的濾波器區域內定義如下變數 zmin min sxy 模板視窗sxy中的最小灰度值 ...

基於inline block進行自適應列表布局

display block a.block元素會獨佔一行,多個block元素會各自新起一行。預設情況下,block元素寬度自動填滿其父元素寬度。b.block元素可以設定width,height屬性。塊級元素即使設定了寬度,仍然是獨佔一行。c.block元素可以設定margin和padding屬性。...