❶ 基於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])
❷ 自適應過濾法只能預測一期的數據嗎
自適應量化是使量化級差跟隨輸入信號變化,使不同大小的信號平均量化誤差最小,從而提高信噪比;自適應預測的基本思想是使預測系數跟隨輸入信號而變化,從而保證預測值與樣值最接近,即預測誤差最小。
❸ 自適應過濾法的缺點是什麼呀,急!!!
自適應過濾法對處理具有長期趨勢性變動或季節性變動的確定型時間序列比較有優勢。對於有線性趨勢的數據,可以應用差分方法消除數據的趨勢。
❹ 急求:自適應聯邦濾波演算法的matlab模擬程序代碼
clear
fs=1000;%采樣頻率1000hz
N=500;%采樣點數
t=(0:1:N-1)/fs;
f=10;%正弦信號頻率10hz
x=sin(2*pi*f*t)+randn(size(t));%被隨機信號干擾的正弦信號
b = fir1(31,0.5); %由b = fir1(31,0.5); 產生32階濾波器系數
n = 0.1*randn(1,500); % 通過以上濾波系統所加入的雜訊
d = filter(b,1,x)+n; % 通過濾波器後的期望信號
delta = 0.005; % 設置自適應濾波器其中一個步長因子為0.005
ha = adaptfilt.lms(32,delta);%求出系統的濾波器系數
[y,e] = filter(ha,x,d);
delta0=0.001; %另一個步長因子為0.001作對比
ha=adaptfilt.lms(32,delta0);
[y0,e0]=filter(ha,x,d);
m=1:500;
figure(1);
plot(m,x,'g');
figure(2);
plot(m,e,'r',m,e0);
legend('delta=0.001','delta=0.005')
% subplot(2,1,1)
% plot(m,e0)
%
以上是基本的LMS演算法
% 濾波型LMS演算法濾波
M = 20; % 運行次數
N = 1000; % 信號的長度
n = 0:N-1;
s = sin(2*pi*n/10); % 初始信號
u = s + 0.36*randn(1,N); % 疊加雜訊後的信號
% 信號疊加雜訊波形圖
figure(1);
plot(n,u);
title('信號疊加雜訊波形圖');
xlabel('n');ylabel('u');
y = zeros(1,N); % 初始化經過自適應濾波器後的信號為零向量
w = zeros(1,N); % 初始化自適應濾波器的權向量為零向量
e = zeros(N); % 初始化誤差e(n)的為零向量
a = zeros(1,N); % 初始化前向濾波器的權向量為零向量
vare = zeros(N); % 初始化誤差的平方e(n)^2的為零向量
estd = zeros(N); % 初始化均方誤差E{e(n)^2}的為零向量
vare1 = ones(1,N); % 初始化誤差的平方e(n)^2的為1向量
estd1 = ones(1,N); % 初始化均方誤差E{e(n)^2}的為1向量
k = 10; % 自適應濾波器的階數
e1 = zeros(1,N); % 初始化前向預測誤差e1為零向量
e2 = zeros(1,N); % 初始化濾波向量e為零向量
y(1:k) = u(1:k);
mu0 = 0.0065; % 初始更新步長因子
% 初始化前向濾波器的權向量
a(1:11) = [ 0.1642 , 0.1341 , 0.0529,-0.0624 , -0.1586 ,-0.1932 , -0.1555 , -0.0599 , 0.0584, 0.1229 , 0.1106];
% 濾波型LMS演算法濾波
for j = (k + 1):M
u = s + 0.36*randn(1,N); % 疊加雜訊後的信號
for n=(k+2):N
mu = mu0/(1 + (n/100)); % 先搜索後收斂步長因子
e(j,n) = s(n) - w((n-1):(n+9)) * u(n:-1:(n-10))'; % 誤差
e1(n) = u(n) + a((n-10):n)*u((n-1):-1:(n-11))'; % 前向預測誤差
e2(n) = e(j,n) + a((n-10):n)*e(j,(n:-1:(n-10)))'; % 濾波
w(n:(n+10)) = w((n-1):(n+9)) + mu*e1(n:-1:(n-10))*e2(n); % 更新自適應濾波器的權向量
y(n) = w((n):(n+10)) * u((n):-1:(n-10))'; % 經過自適應濾波器後的信號
vare(j,n) =e(j,n)^2; % 誤差的平方e(n)^2
estd(j,n) = vare(j,(1:n))*vare(j,(1:n))'/n; % 均方誤差E{e(n)^2}
end
end
vare1 = (vare1*vare)/M; % 統計平均意義下e(n)^2
estd1 = (estd1*estd)/M; % 統計平均意義下學習曲線
% 濾波型LMS自適應濾波輸出
figure(2);
plot(y);
title('mu = 0.0065時濾波型LMS自適應濾波輸出');
xlabel('n');ylabel('y');
% 濾波型LMS自適應濾波器的e(n)^2的曲線
figure(3);
plot(vare1);
title('濾波型LMS自適應濾波器的e(n)^2的曲線 ');
xlabel('n');ylabel('e(n)^2');
% 濾波型LMS自適應濾波器的學習曲線圖
figure(4);
plot(estd1);
title('濾波型LMS自適應濾波器的學習曲線圖 ');
xlabel('n');ylabel('E[e(n)^2]');
希望可以幫到你
❺ 自適應過濾法完整正確c++程序
自適應過濾法???抱歉我還沒學過!一、自適應過濾法就是從自回歸系數的一組初始估計值開始利用公式
逐次迭代,不斷調整,以實現自回歸系數的最優化。
自適應過濾法的基本步驟有:
(1)首先確定模型階數P
(2)選擇合適的濾波參數k
(3)計算每一次殘差e
(4)根據殘差e以及調整公式計算下一輪的系數
(5)迭代直到取得合適的系數
二、自適應過濾法的一個很重要的特點是經過逐次迭代,自回歸系數可以不斷調整,以使自回歸系數達到最優化。
自適應過濾法優點是:
(1)簡單易行,可採用標准程序上機運算。
(2)適用於數據點較少的情況。
(3)約束條件較少
(4)具有自適應性,他能自動調整回歸系數,是一個可變系數的數據模型。
三、使用自適應過濾法應選擇好濾波常數k,這樣不僅可使迭代次數不太多,而且可以確保MSE取值最小。
濾波常數k的選擇原則有:
(1)k越接近於1可以減少迭代次數
(2)為了避免太大的k而導致的誤差序列的發散性,k應小於或等於1/P
(3)根據Box-Jenkins方法的基本知識,
,
而Windrow將其表述為:
四、對原始數列做標准化處理很重要,這樣可加快迭代的收斂速度,並使取得的誤差從平均意義上逐漸減小。
五、學會使用計算機來進行自適應過濾法的計算,這樣可使自適應過濾法的應用變得簡單易行。
❻ 各位 有誰知道自適應過濾法的MATLAB的程序
(1)首先確定模型階數P
(2)選擇合適濾波參數k
(3)計算每殘差e
(4)根據殘差e及調整公式計算輪系數
(5)迭代直取合適系數!
❼ 預測方法中自適應過濾法的一段C++程序,哪位大蝦幫我看看,我這個程序沒有錯誤,但是不能輸入數據
gezhongshuju
❽ 自適應過濾法的應用
用自適應過濾法調整權數的方法如下:基於不斷發現預測值與觀測值之間的誤差,然後對預測模型的權數加以調整,以縮小誤差,並反復循環,最終使誤差為零。調整權數的公式是按數學中最優化原理的最速下降法給出的。
一、自適應過濾法就是從自回歸系數的一組初始估計值開始利用公式
逐次迭代,不斷調整,以實現自回歸系數的最優化。
自適應過濾法的基本步驟有:
(1)首先確定模型階數P
(2)選擇合適的濾波參數k
(3)計算每一次殘差e
(4)根據殘差e以及調整公式計算下一輪的系數
(5)迭代直到取得合適的系數
二、自適應過濾法的一個很重要的特點是經過逐次迭代,自回歸系數可以不斷調整,以使自回歸系數達到最優化。
自適應過濾法優點是:
(1)簡單易行,可採用標准程序上機運算。
(2)適用於數據點較少的情況。
(3)約束條件較少
(4)具有自適應性,他能自動調整回歸系數,是一個可變系數的數據模型。
三、使用自適應過濾法應選擇好濾波常數k,這樣不僅可使迭代次數不太多,而且可以確保MSE取值最小。
濾波常數k的選擇原則有:
(1)k越接近於1可以減少迭代次數
(2)為了避免太大的k而導致的誤差序列的發散性,k應小於或等於1/P
(3)根據Box-Jenkins方法的基本知識,
,
而Windrow將其表述為:
四、對原始數列做標准化處理很重要,這樣可加快迭代的收斂速度,並使取得的誤差從平均意義上逐漸減小。
五、學會使用計算機來進行自適應過濾法的計算,這樣可使自適應過濾法的應用變得簡單易行。
❾ 自適應濾波的幾種典型的自適應濾波演算法
對自適應濾波演算法 的研究是當今自適應信號處理中最為活躍的研究課題之一。自適應濾波演算法廣泛應用於系統辨識、回波消除、自適應譜線增強、自適應信道均衡、語音線性預測、自適應天線陣等諸多領域中。總之,尋求收斂速度快,計算復雜性低,數值穩定性好的自適應濾波演算法是研究人員不斷努力追求的目標。雖然線性自適應濾波器和相應的演算法具有結構簡單、計算復雜性低的優點而廣泛應用於實際,但由於對信號的處理能力有限而在應用中受到限制。由於非線性自適應濾波器,如Voletrra濾波器和基於神經網路的自適應濾波器,具有更強的信號處理能力,已成為自適應信號處理中的一個研究熱點。其中較典型的幾種演算法包括: LMS自適應濾波演算法 RLS自適應濾波演算法 變換域自適應濾波演算法 仿射投影演算法 共扼梯度演算法 基於子帶分解的自適應濾波演算法 基於QR分解的自適應濾波演算法 演算法性能評價
變步長的自適應濾波演算法 雖然解決了收斂速度、時變系統跟蹤速度與收斂精度方面對演算法調整步長因子u的矛盾,但變步長中的其它參數的選取還需實驗來確定,應用起來不太方便。對RLS演算法的各種改進,其目的均是保留RLS演算法收斂速度快的特點而降低其計算復雜性。變換域類演算法亦是想通過作某些正交變換使輸入信號自相關矩陣的特徵值發散程度變小,提高收斂速度。而仿射投影演算法的性能介於LMS演算法和RLS演算法之間。共扼梯度自適應濾波演算法的提出是為了降低RLS類演算法的復雜性和克服某些快速RLS演算法存在的數值穩定性問題。信號的子帶分解能降低輸入信號的自相關矩陣的特徵值發散程度,從而加快自適應濾波演算法的收斂速度,同時便於並行處理,帶來了一定的靈活性。矩陣的QR分解具有良好的數值穩定性。
❿ 自適應濾波器演算法h(n+1)=h(n)+2μx(n)e(n)用C語言完成 其中函數問題
#include <stdio.h>
long float fun(int n) //求階乘函數
{
if(n>1)
return n*fun(n-1);
else
return 1;
}
long float fun1(int x,int n) //求x的n次方函數
{
long float i;
long float sum=1;
if(n>=1)
for(i=1;i<=n;i++)
sum*=x;
else
sum=1;
return sum;
}
main()
{
int x,i=1;
long float sum=1,s;
printf("請輸入x:\n");
scanf("%d",x);
for(i=1;i<150;i++) //n最大取值為149
sum+=fun1(x,i)/fun(i);
printf("e的%d次方的值為:%f\n", x,sum);
}