求基于RLS算法和LMS的自适应均衡系统的MATLAB程序``

 我来答
xy87051337
2010-04-06
知道答主
回答量:29
采纳率:0%
帮助的人:9.4万
展开全部
里面有些代码有问题,可以参考,代码还是自己写:!
%基于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('100次计算e^2的平均变化曲线');
富港检测东莞有限公司
2024-12-25 广告
ISTA3L是一个基于研究、数据驱动的测试协议,它模拟了由零售公司完成的产品订单被直接运送给消费者时所经历的危险,它允许用户评估包装产品的能力,以承受运输和处理包装产品时所经历的供应链危险,从接收到任何电子商务零售商履行操作,直到最终消费者... 点击进入详情页
本回答由富港检测东莞有限公司提供
悉迈楚高卓
2020-05-17 · TA获得超过3933个赞
知道大有可为答主
回答量:3173
采纳率:29%
帮助的人:163万
展开全部
%
RLS
算法
<br>randn('seed',
0)
;
<br>rand('seed',
0)
;
<br>
<br>NoOfData
=
8000
;
%
Set
no
of
data
points
used
for
training
<br>Order
=
32
;
%
Set
the
adaptive
filter
order
<br>
<br>Lambda
=
0.98
;
%
Set
the
forgetting
factor
<br>Delta
=
0.001
;
%
R
initialized
to
Delta*I
<br>
<br>x
=
randn(NoOfData,
1)
;%
Input
assumed
to
be
white
<br>h
=
rand(Order,
1)
;
%
System
picked
randomly
<br>d
=
filter(h,
1,
x)
;
%
Generate
output
(desired
signal)
<br>
<br>%
Initialize
RLS
<br>
<br>P
=
Delta
*
eye
(
Order,
Order
)
;
<br>w
=
zeros
(
Order,
1
)
;
<br>
<br>%
RLS
Adaptation
<br>
<br>for
n
=
Order
:
NoOfData
;
<br>
<br>u
=
x(n:-1:n-Order+1)
;
<br>pi_
=
u'
*
P
;
<br>k
=
Lambda
+
pi_
*
u
;
<br>K
=
pi_'/k;
<br>e(n)
=
d(n)
-
w'
*
u
;
<br>w
=
w
+
K
*
e(n)
;
<br>PPrime
=
K
*
pi_
;
<br>P
=
(
P
-
PPrime
)
/
Lambda
;
<br>w_err(n)
=
norm(h
-
w)
;
<br>
<br>end
;
<br>
<br>%
Plot
results
<br>
<br>figure
;
<br>plot(20*log10(abs(e)))
;
<br>title('Learning
Curve')
;
<br>xlabel('Iteration
Number')
;
<br>ylabel('Output
Estimation
Error
in
dB')
;
<br>
<br>figure
;
<br>semilogy(w_err)
;
<br>title('Weight
Estimation
Error')
;
<br>xlabel('Iteration
Number')
;
<br>ylabel('Weight
Error
in
dB')
;
<br>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式