導航:首頁 > 源碼編譯 > mu0026m演算法頻偏

mu0026m演算法頻偏

發布時間:2023-08-08 01:54:04

① 基於RLS演算法和LMS的自適應濾波器的MATLAB程序

基於RLS演算法和LMS的備春自適應濾波器的MATLAB程序是什麼?

% RLS演算法
randn('seed', 0) ;
rand('seed', 0) ;
NoOfData = 8000 ; % Set no of data points used for training
Order = 32 ; % 自適應濾波權數
Lambda = 0.98 ; % 遺忘因子
Delta = 0.001 ; % 相關矩陣R的初始化
x = randn(NoOfData, 1) ;%高斯隨機系列
h = rand(Order, 1) ; % 系統隨機抽樣
d = filter(h, 1, x) ; % 期望輸出
% RLS演算法的初始化
P = Delta * eye ( Order, Order ) ;%相關矩陣
w = zeros ( Order, 1 ) ;%濾波系數矢量的初始化
% RLS Adaptation
for n = Order : NoOfData ;
u = x(n:-1:n-Order+1) ;%延時函數
pi_ = u' * P ;%互相關戚爛函數
k = Lambda + pi_ * u ;
K = pi_'/k;%增益矢量
e(n) = d(n) - w' * u ;%誤差函數
w = w + K * e(n) ;%遞歸公式
PPrime = K * pi_ ;
P = ( P - PPrime ) / Lambda ;%誤差相關矩陣
w_err(n) = norm(h - w) ;%真實估計誤差
end ;
% 作圖表示結果
figure ;
plot(20*log10(abs(e))) ;%| e |的誤差曲線
title('學習曲線') ;
xlabel('迭代次數') ;
ylabel('輸出誤差估計') ;
figure ;
semilogy(w_err) ;%作實際估計誤差圖
title('矢量估計誤差') ;
xlabel('迭代次數') ;
ylabel('誤差權矢量') ;
%lms 演算法
clear all
close all
hold off%系統信道權數
sysorder = 5 ;%抽頭數
N=1000;%總采樣次數
inp = randn(N,1);%產生高斯隨機系列
n = randn(N,1);
[b,a] = butter(2,0.25);
Gz = tf(b,a,-1);%逆變高滾漏換函數
h= [0.0976;0.2873;0.3360;0.2210;0.0964;];%信道特性向量
y = lsim(Gz,inp);%加入雜訊
n = n * std(y)/(10*std(n));%雜訊信號
d = y + n;%期望輸出信號
totallength=size(d,1);%步長
N=60 ; %60節點作為訓練序列
%演算法的開始
w = zeros ( sysorder , 1 ) ;%初始化
for n = sysorder : N
u = inp(n:-1:n-sysorder+1) ;% u的矩陣
y(n)= w' * u;%系統輸出
e(n) = d(n) - y(n) ;%誤差
if n < 20
mu=0.32;
else
mu=0.15;
end
w = w + mu * u * e(n) ;%迭代方程
end
%檢驗結果
for n = N+1 : totallength
u = inp(n:-1:n-sysorder+1) ;
y(n) = w' * u ;
e(n) = d(n) - y(n) ;%誤差
end
hold on
plot(d)
plot(y,'r');
title('系統輸出') ;
xlabel('樣本')
ylabel('實際輸出')
figure
semilogy((abs(e))) ;% e的絕對值坐標
title('誤差曲線') ;
xlabel('樣本')
ylabel('誤差矢量')
figure%作圖
plot(h, 'k+')
hold on
plot(w, 'r*')
legend('實際權矢量','估計權矢量')
title('比較實際和估計權矢量') ;
axis([0 6 0.05 0.35])

急求:基於RLS演算法和LMS演算法的正弦信號的自適應濾波器的MATLAB的模擬程序.

數字濾波器在數字信號處理中的應用廣泛,是數字信號處理的重要基礎。自適應濾波器可以不必事先給定信號及雜訊的自相關函數,它可以利用前一時刻已獲得的濾波器參數自動地調節現時刻的濾波器參數使得濾波器輸出和未知的輸入之間的均方誤差最小化,從而它可以實現最優濾波。
自適應濾波器的演算法有很多,有RLS(遞歸最小二乘法)和LMS(最小均方演算法)等。自適應LMS演算法是一種很有用且很簡單的估計梯度的方法,在信號處理中得到廣泛應用。
本論文主要研究了自適應濾波器的基本結構和原理,然後介紹了最小均方誤差演算法(LMS演算法),並完成了一種基於MATLAB平台的自適應LMS自適應濾波器的設計,同時實現了對信號進行初步的降噪處理。
通過模擬,我們實現了LMS自適應濾波演算法,並從結果得知步長和濾波器的階數是濾波器中很重要的兩個參數,並通過修改它們證實了這一點,其中步長影響著收斂時間,而且階數的大小也會大大地影響自適應濾波器的性能。

求基於LMS自適應濾波器的詳細資料

自適應濾波器實際上是一種能夠自動調整本身參數的特殊維納濾波器,在設計時不需要預先知道關於輸入信號和雜訊的統計特性,它能夠在工作過程中逐步「了解」 或估計出所需的統計特性,並以此為依據自動調整自身的參數,以達到最佳濾波效果。一旦輸入信號的統計特性發生變化,它又能夠跟蹤這種變化,自動調整參數,使濾波器性能重新達到最佳。 自適應濾波器由參數可調的數字濾波器(或稱為自適應處理器)和自適應演算法兩部分組成,如圖7-3所示。參數可調數字濾波器可以是FIR數字濾波器或IIR數字濾波器,也可以是格型數字濾波器。輸入信號x(n)通過參數可調數字濾波器後產生輸出信號(或響應)y(n),將其與參考信號(或稱期望響應)d(n)進行比較,形成誤差信號e(n),並以此通過某種自適應演算法對濾波器參數進行調整,最終使e(n)的均方值最小。盡管自適應濾波器具有各種不同的演算法和結構,但是,其最本質特徵是始終不變的。這種最本質的特徵可以概括為:自適應濾波器依據用戶可以接受的准則或性能規范,在未知的而且可能是時變的環境中正常運行,而無須人為的干預。本章主要討論的是基於維納濾波器理論的最小均方(LMS)演算法,可以看到LMS演算法的主要優點是演算法簡單、運算量小、易於實現;其主要缺點是收斂速度較慢,而且與輸入信號的統計特性有關。 自適應線性濾波器是一種參數可自適應調整的有限沖激響應(FIR)數字濾波器,具有非遞歸結構形式。因為它的分析和實現比較簡單,所以在大多數自適應信號處理系統中得到了廣泛應用。如圖7-4所示的是自適應線性濾波器的一般形式。輸入信號矢量x(n)的L+1個元素,既可以通過在同一時刻對L+1個不同信號源取樣得到,也可以通過對同一信號源在n以前L+1個時刻取樣得到。前者稱為多輸入情況,如圖7-5所示,後者稱為單輸入情況如圖7-4所示,這兩種情況下輸入信號矢量都用x(n)表示,但應注意它們有如下區別。 單輸入情況: (7-18) 多輸入情況: (7-19) 單輸入情況下x(n)是一個時間序列,其元素由一個信號在不同時刻的取樣值構成;而多輸入情況下x(n)是一個空間序列,其元素由同一時刻的一組取樣值構成,相當於並行輸入。 對於一組固定的權系數來說,線性濾波器是輸出y(n)等於輸入矢量x(n)的各元素的線性加權之和。然而實際上權系數是可調的,調整權系數的過程叫做自適應過程。在自適應過程中,各個權系數不僅是誤差信號e(n)的函數,而且還可能是輸入信號的函數,因此,自適應線性濾波器的輸出就不再是輸入信號的線性函數。 輸入信號和輸出信號之間的關系為 單輸入情況: (7-20) 多輸入情況: (7-21) 如圖7-4所示的單輸入自適應線性濾波器,實際上是一個時變橫向數字濾波器,有時稱為自適應橫向濾波器。它在信號處理中應用很廣泛。自適應線性濾波器的L+1個權系數構成一個權系數矢量,稱為權矢量,用w(n)表示,即 (7-22) 這樣,輸出響應表示為 (7-23) 參考響應與輸出響應之差稱為誤差信號,用e(n)表示,即 (7-24) 自適應線性濾波器按照誤差信號均方值(或平均功率)最小的准則,即 (7-25) 來自動調整權矢量。

急求,matlab自適應濾波器的程序

clear all
close all
%channel system order
sysorder = 5 ;
% Number of system points
N=2000;
inp = randn(N,1);
n = randn(N,1);
[b,a] = butter(2,0.25);
Gz = tf(b,a,-1);
%This function is submitted to make inverse Z-transform (Matlab central file exchange)
%The first sysorder weight value
%h=ldiv(b,a,sysorder)'
% if you use ldiv this will give h :filter weights to be
h= [0.0976;
0.2873;
0.3360;
0.2210;
0.0964;];
y = lsim(Gz,inp);
%add some noise
n = n * std(y)/(10*std(n));
d = y + n;
totallength=size(d,1);
%Take 60 points for training
N=60 ;
%begin of algorithm
w = zeros ( sysorder , 1 ) ;
for n = sysorder : N
u = inp(n:-1:n-sysorder+1) ;
y(n)= w' * u;
e(n) = d(n) - y(n) ;
% Start with big mu for speeding the convergence then slow down to reach the correct weights
if n < 20
mu=0.32;
else
mu=0.15;
end
w = w + mu * u * e(n) ;
end
%check of results
for n = N+1 : totallength
u = inp(n:-1:n-sysorder+1) ;
y(n) = w' * u ;
e(n) = d(n) - y(n) ;
end
hold on
plot(d)
plot(y,'r');
title('System output') ;
xlabel('Samples')
ylabel('True and estimated output')
figure
semilogy((abs(e))) ;
title('Error curve') ;
xlabel('Samples')
ylabel('Error value')
figure
plot(h, 'k+')
hold on
plot(w, 'r*')
legend('Actual weights','Estimated weights')
title('Comparison of the actual weights and the estimated weights') ;
axis([0 6 0.05 0.35])
% RLS 演算法
randn('seed', 0) ;
rand('seed', 0) ;
NoOfData = 8000 ; % Set no of data points used for training
Order = 32 ; % Set the adaptive filter order
Lambda = 0.98 ; % Set the fetting factor
Delta = 0.001 ; % R initialized to Delta*I
x = randn(NoOfData, 1) ;% Input assumed to be white
h = rand(Order, 1) ; % System picked randomly
d = filter(h, 1, x) ; % Generate output (desired signal)
% Initialize RLS
P = Delta * eye ( Order, Order ) ;
w = zeros ( Order, 1 ) ;
% RLS Adaptation
for n = Order : NoOfData ;
u = x(n:-1:n-Order+1) ;
pi_ = u' * P ;
k = Lambda + pi_ * u ;
K = pi_'/k;
e(n) = d(n) - w' * u ;
w = w + K * e(n) ;
PPrime = K * pi_ ;
P = ( P - PPrime ) / Lambda ;
w_err(n) = norm(h - w) ;
end ;
% Plot results
figure ;
plot(20*log10(abs(e))) ;
title('Learning Curve') ;
xlabel('Iteration Number') ;
ylabel('Output Estimation Error in dB') ;
figure ;
semilogy(w_err) ;
title('Weight Estimation Error') ;
xlabel('Iteration Number') ;
ylabel('Weight Error in dB') ;

急求基於遺傳演算法的自適應濾波器matlab模擬程序代碼?謝謝

處理的重要基礎。自適應濾波器可以不必事先給定信號及雜訊的自相關函數,它可以利用前一時刻已獲得的濾波器參數自動地調節現時刻的濾波器參數使得濾波器輸出和未知的輸入之間的均方誤差最小化,從而它可以實現最優濾波。
自適應濾波器的演算法有很多,有RLS(遞歸最小二乘法)和LMS(最小均方演算法)等。自適應LMS演算法是一種很有用且很簡單的估計梯度的方法,在信號處理中得到廣泛應用。
本論文主要研究了自適應濾波器的基本結構和原理,然後介紹了最小均方誤差演算法(LMS演算法),並完成了一種基於MATLAB平台的自適應LMS自適應濾波器的設計,同時實現了對信號進行初步的降噪處理。
通過模擬,我們實現了LMS自適應濾波演算法,並從結果得知步長和濾波器的階數是濾波器中很重要的兩個參數,並通過修改它們證實了這一點,其中步長影響著收斂時間,而且階數的大小也會大大地影響自適應濾波器的性能。

變步長LMS自適應濾波演算法的MATLAB程序, 用Matlab軟體實現變長NLMS自適應濾波器演算法

clear all
close all
N=10; %濾波器階數
sample_N=500; %采樣點數
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');

自適應濾波器的演算法如何用MATLAB去編

幫你在網路文庫里找到這個演算法,自適應雜訊抵消LMS演算法Matlab模擬,希望對你有幫助。如有問題,可以再討論解決。

求基於RLS演算法和LMS的自適應均衡系統的MATLAB程序``

裡面有些代碼有問題,可以參考,代碼還是自己寫:!
%基於RLS演算法的自適應線性預測
clc;
clear all;
N=300;
M=100;%計算的次數
w1=zeros(N,M);w2=zeros(N,M);I=eye(2);e1=zeros(N,M);
for k=1:M
%產生白雜訊
Pv=0.008;%定義白雜訊方差
a1=-0.195;a2=0.95;o=0.02;r=0.95;
m=5000;%產生5000個隨機數
v=randn(1,m);
v=v*sqrt(Pv);%產生均值為0,方差為Pv的白雜訊
%m=1:N;
v=v(1:N);%取出前1000個
%plot(m,v);title('均值為0,方差為0.0965的白雜訊');ylabel('v(n)');xlabel('n');
v=v'
%向量初使化
x=zeros(1,N);
x(1)=v(1);%x(0)=v(0)
x(2)=v(2)-a1*v(1);%x(1)=v(1)-a1*v(0)
w=zeros(2,N);
w(:,1)=[0 0]'%w(0)=[0 0]'
X=zeros(2,N);
X(:,2)=[v(1) 0]'%X(0)=[0 0]'X(1)=[v(0) 0]'
C=zeros(2,2*N);
C(:,1:2)=1/o.*I;%C(0)=1/o*I
e=zeros(1,N)'%定義誤差向量
u=zeros(1,N);
g=zeros(2,N);
%根據RLS演算法進行遞推
for n=1:N-2
x(n+2)=v(n+2)-a1*x(n+1)-a2*x(n);
X(:,n+2)=[x(n+1) x(n)]'
u(n)=X(:,n+1)'*C(:,2*n-1:2*n)*X(:,n+1);
g(:,n)=(C(:,2*n-1:2*n)*X(:,n+1))./(r+u(n));
w(:,n+1)=w(:,n)+g(:,n)*(x(n+1)-X(:,n+1)'*w(:,n));
C(:,2*n+1:2*(n+1))=1/r.*(C(:,2*n-1:2*n)-g(:,n)*X(:,n+1)'*C(:,2*n-1:2*n));
e(n)=x(n+1)-X(:,n+1)'*w(:,n);

w1(:,k)=w(1,:)' w2(:,k)=w(2,:)'%將每次計算得到的權矢量值儲存
e1(:,k)=e(:,1);%將每次計算得到的誤差儲存
end

end
%求權矢量和誤差的M次的平均值
wa1=zeros(N,1);wa2=zeros(N,1);en=zeros(N,1);
for k=1:M
wa1(:,1)=wa1(:,1)+w1(:,k);
wa2(:,1)=wa2(:,1)+w2(:,k);
en(:,1)=en(:,1)+e1(:,k);
end
n=1:N;
subplot(221)
plot(n,w(1,n),n,w(2,n));%作出單次計算權矢量的變化曲線
xlabel('n');ylabel('w(n)');title('w1(n)和w2(n)的單次變化曲線(線性預測,RLS)')
subplot(222)
plot(n,wa1(n,1)./M,n,wa2(n,1)./M);%作出100次計算權矢量的平均變化曲線
xlabel('n');ylabel('w(n)');title('w1(n)和w2(n)的100次平均變化曲線')
subplot(223)
plot(n,e(n,1).^2);%作出單次計算e^2的變化曲線
xlabel('n');ylabel('e^2');title('單次計算e^2的變化曲線');
subplot(224)
plot(n,(en(n,1)/M).^2);%作出M次計算e^2的平均變化曲線
xlabel('n');ylabel('e^2');title(颼次計算e^2的平均變化曲線');

② matlab中trainlm演算法和trainbr中mu值是什麼意思

變數mu確定了學習是根據牛頓法還是梯度法來完成,下式為更新參數的L-M規則:

% jj = jX * jX
% je = jX * E
% dX = -(jj+I*mu) \ je
隨著mu的增大,LM的項jj可以忽略。因此學習過程主要根據梯度下降即mu/je項,只要迭代使誤差增加,mu也就會增加,直到誤差不再增加為止,但是,如果mu太大,則會使學習停止,當已經找到最小誤差時,就會出現這種情況,這就是為什麼當mu達到最大值時要停止學習的原因。

閱讀全文

與mu0026m演算法頻偏相關的資料

熱點內容
安卓為什麼免費使用 瀏覽:397
加密貨幣都有哪些平台 瀏覽:625
python和matlab難度 瀏覽:388
python爬蟲很難學么 瀏覽:572
小米解壓積木可以組成什麼呢 瀏覽:816
為什麼滴滴出行app還能用 瀏覽:564
怎麼升級手機android 瀏覽:922
php權威編程pdf 瀏覽:994
扣扣加密技巧 瀏覽:720
蘋果如何創建伺服器錯誤 瀏覽:495
軟考初級程序員大題分值 瀏覽:473
js壓縮視頻文件 瀏覽:578
linux如何通過命令創建文件 瀏覽:991
應用加密app還能訪問應用嘛 瀏覽:434
安卓怎麼用支付寶交違章罰款 瀏覽:665
php面向對象的程序設計 瀏覽:504
數據挖掘演算法書籍推薦 瀏覽:894
投訴聯通用什麼app 瀏覽:152
web伺服器變更ip地址 瀏覽:956
java正則表達式驗證郵箱 瀏覽:362