㈠ 求在MIMO-OFDM系統使用RLS演算法計算迭代次數與均方誤差的Matlab程序
pudn 上面有
㈡ RLS演算法的自適應預測
你對濾波器的理解完全是錯誤的,進入RLS濾波器的時候,如果你的濾波器寫的是N=128階的,那信號進入時128個數做一次運算,然後往後遞推一位再做一次,而你寫的是 v=s(n-N:n-1)*p;這個是整段信號與p相乘,所以不對,再往上看%u=s(n-1:-1:n-N);這個公式本來寫的是對的,但是你下面沒有用到u,你仔細看u就是一個128位的向量,應該用u來與p相乘。
㈢ RLS演算法的原理
「遞歸最小二次方演算法」——RLS演算法,其又稱最小二乘法。
在我們研究兩個變數(x, y)之間的相互關系時,通常可以得到一系列成對的數據
(x1, y1、x2, y2... xm , ym);
將這些數據描繪在x -y直角坐標系中
若發現這些點在一條直線附近,
可以令這條直線方程如(式1-1)。
Y計= a0 + a1 X (式1-1)
其中:a0、a1 是任意實數
為建立這直線方程就要確定a0和a1,應用《最小二乘法原理》,
將實測值Yi與利用(式1-1)計算值(Y計=a0+a1X)的離差
(Yi-Y計)的平方和〔∑(Yi - Y計)2〕最小為「優化判據」。
令: φ = ∑(Yi - Y計)2 (式1-2)
把(式1-1)代入(式1-2)中得: φ = ∑(Yi - a0 - a1 Xi)2 (式1-3)
當∑(Yi-Y計)平方最小時,可用函數
φ 對a0、a1求偏導數,令這兩個偏導數等於零。
亦即:
m a0 + (∑Xi ) a1 = ∑Yi
(∑Xi ) a0 + (∑Xi2 ) a1 = ∑(Xi, Yi)
得到的兩個關於a0、a1為未知數的兩個方程組,解這兩個方程組得出:
a0 = (∑Yi) / m - a1(∑Xi) / m
a1 = [∑Xi Yi - (∑Xi ∑Yi)/ m] / [∑Xi2 - (∑Xi)2 / m)]
這時把a0、a1代入(式1-1)中, 此時的(式1-1)
就是我們回歸的元線性方程即:數學模型。
㈣ 什麼是QR-RLS演算法
基於QR 分解的最小二乘演算法(QR-RLS)。
實數矩陣 A 的 QR 分解是把 A 分解為A=QR,這里的 Q 是正交矩陣(意味著 QTQ = I)而 R 是上三角矩陣。
㈤ 實現RLS演算法的matlab程序有沒有大神會的一直出不來
% 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 forgetting 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') ;
㈥ RLS演算法中的遺忘因子是什麼
遺忘因子是誤差測度函數中的加權因子,引入它的目的是為了賦予原來數據與新數據以不同的權值,以使該演算法具有對輸入過程特性變化的快速反應能力。
「遞歸最小二次方演算法」——RLS演算法,其又稱最小二乘法。
在我們研究兩個變數(x, y)之間的相互關系時,通常可以得到一系列成對的數據
(x1, y1、x2, y2... xm , ym);
將這些數據描繪在x -y直角坐標系中
若發現這些點在一條直線附近,
可以令這條直線方程如(式1-1)。
Y計= a0 + a1 X (式1-1)
其中:a0、a1 是任意實數
為建立這直線方程就要確定a0和a1,應用《最小二乘法原理》,
將實測值Yi與利用(式1-1)計算值(Y計=a0+a1X)的離差
(Yi-Y計)的平方和〔∑(Yi - Y計)2〕最小為「優化判據」。
令: φ = ∑(Yi - Y計)2 (式1-2)
把(式1-1)代入(式1-2)中得: φ = ∑(Yi - a0 - a1 Xi)2 (式1-3)
當∑(Yi-Y計)平方最小時,可用函數
φ 對a0、a1求偏導數,令這兩個偏導數等於零。
亦即:
m a0 + (∑Xi ) a1 = ∑Yi
(∑Xi ) a0 + (∑Xi2 ) a1 = ∑(Xi, Yi)
得到的兩個關於a0、a1為未知數的兩個方程組,解這兩個方程組得出:
a0 = (∑Yi) / m - a1(∑Xi) / m
a1 = [∑Xi Yi - (∑Xi ∑Yi)/ m] / [∑Xi2 - (∑Xi)2 / m)]
這時把a0、a1代入(式1-1)中, 此時的(式1-1)
就是我們回歸的元線性方程即:數學模型。
㈦ 基於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中RLS演算法過程,運行不過啊
能把x=[...];%訓練樣本
d=[...];%期望值
文件發過來,調試用嗎?