直接上**吧,原理一大堆,自行了解即可!這是lms即自適應濾波器的matlab**。
function
[yn,
w,en]
=lms
(xt,dn,
m,mu)
itr =
length
(xt)
; en =
zeros
(itr,1)
;% 誤差序列,
en(k)表示第k次迭代時預期輸出與實際輸入的誤差w=
zeros(m
,itr)
;% 每一行代表乙個加權參量,每一列代表-次迭代,初始為0
% 迭代計算
for k =
m:itr % 第k次迭代
x =xt(k:-1
:k-m+1
);% 濾波器m個抽頭的輸入
y =w(
:,k-1)
.' * x ;
% 濾波器的輸出
en(k)=
dn(k)
- y ;
% 第k次迭代的誤差
% 濾波器權值計算的迭代式
w(:,k)=w(
:,k-1)
+2*mu*
en(k)
*x;end
% 求最優時濾波器的輸出序列 r如果沒有yn返回引數可以不要下面的
yn = inf *
ones
(size
(xt));
% inf 是無窮大的意思
for k =m:
length
(xt)
x =xt(k:-1
:k-m+1
);yn(k)=w
(:,end)
.'* x;
%用最後得到的最佳估計得到輸出
end
end
close all
% 週期訊號的產生 t=0
:999
;xs=5*
square
(0.03
*t,50);
figure;
subplot(2
,1,1
);plot
(t,xs)
;grid;
ylabel
('幅值');
title(''
);% 雜訊訊號的產生t=0
:999
;xn=
randn(1
,1000);
subplot(2
,1,2
);plot
(t,xn)
;grid;
ylabel
('幅值');
xlabel
('時間');
title(''
);% 訊號濾波
xt = xs+xn;
xt = xt.';
% 輸入訊號序列
dn = xn.' ;
% 預期結果序列m=
20;% 濾波器的階數
rho_max =
max(
eig(xt*xt.'));
% 輸入訊號相關矩陣的最大特徵值
mu =(1
/rho_max)
% 收斂因子 0
< mu <
1/rho
[yn,
w,en]
=lms
(xt,dn,
m,mu);y
=xt-yn;
% 繪製濾波器輸入訊號
figure;
subplot(2
,1,1
);plot
(t,xt)
;grid;
ylabel
('幅值');
xlabel
('時間');
title(''
);% 繪製自適應濾波器輸出訊號
subplot(2
,1,2
);plot
(t,yn)
;grid;
ylabel
('幅值');
xlabel
('時間');
title(''
);% 繪製自適應濾波器輸出訊號,預期輸出訊號和兩者的誤差
figure
plot
(t,xs,
'g',t,y,
'y',t,
y-xs.
','r')
;grid;
legend
('預期輸出'
,'自適應濾波器輸出'
,'誤差');
ylabel
('幅值');
xlabel
('時間');
title(''
);
自適應中值濾波及matlab實現
常規的中值濾波器,在雜訊的密度不是很大的情況下 根據經驗,雜訊的出現的概率小於0.2 效果不錯。但是當概率出現的概率較高時,常規的中值濾波處理後,仍然具有雜訊點,並丟失了細節和邊緣,效果不是很好。在模板視窗sxy定義的濾波器區域內定義如下變數 zmin min sxy 模板視窗sxy中的最小灰度值 ...
如何實現寬高自適應
我們在進行網頁布局時經常要定義元素的寬和高。但很多時候我們希望元素的大小能夠根據視窗或子元素自動調整,實現這一過程就是寬高自適應。元素自適應在網頁布局中非常重要,它能夠使網頁顯示更靈活,可以適應在不同裝置 不同視窗和不同解析度下顯示。當塊狀元素不寫寬度的時候,預設的寬度是100 即相對于父元素的寬度...
基於matlab的自適應NLMS演算法實現
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 ...