基于RLS算法和LMS的自适应滤波器的MATLAB程序

基于RLS算法和LMS的自适应滤波器的MATLAB程序是什么?% RLS算法

randn('种子',0);

rand('种子',0);

NoOfData = 8000%设置用于训练的数据点数量

阶= 32;%自适应过滤权重

λ= 0.98;遗忘因子%

delta = 0.001;%相关矩阵r的初始化

x = randn(NoOfData,1);%高斯随机序列

h =兰特(阶,1);%系统随机抽样

d =滤波器(h,1,x);预期产出百分比

% RLS算法的初始化

P = Delta * eye(阶,阶);%相关矩阵

w =零(阶,1);%滤波器系数向量的初始化

% RLS自适应

for n = Order:NoOfData;

u = x(n:-1:n阶+1);%延迟功能

pi _ = u ' * P;%互相关函数

k =λ+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);%真实估计误差

结束;

%图表示结果。

图;

plot(20 * log 10(ABS(e)));%| e |的误差曲线

标题(“学习曲线”);

Xlabel(“迭代次数”);

Ylabel(“输出误差估计”);

图;

semi logy(w _ err);%为实际估计误差图表。

标题('向量估计误差');

Xlabel(“迭代次数”);

Ylabel(“误差权重向量”);

%lms算法

清理所有

全部关闭

推迟%系统通道权重

sys order = 5;点击次数百分比

n = 1000;总采样次数百分比

inp = randn(N,1);%产生高斯随机序列

n = randn(N,1);

);

支线剧情(412)

plot(t,x);

支线剧情(413)

plot(t,y);

支线剧情(414)

plot(t,y _规格化);

图(二)

plot(t,误差,' r ',t,误差_归一化,' b ');

如何用MATLAB编写自适应滤波器的算法,帮助你在百度文库中找到这个算法,以及自适应噪声抵消LMS算法的Matlab仿真,希望对你有帮助。如果有什么问题,我们可以讨论解决。

找到基于RLS算法和LMS的自适应均衡系统的MATLAB程序。代码有些问题,可以参考一下。代码还是自己写的。

基于RLS算法的%自适应线性预测

clc

全部清除;

N = 300

m = 100;计算次数百分比

w 1 =零(N,M);w2 =零(N,M);I =眼睛(2);e 1 =零(N,M);

对于k=1:M

%产生白噪音

Pv = 0.008%定义白噪声的方差

a 1 =-0.195;a2 = 0.95o = 0.02r = 0.95

m = 5000%生成5000个随机数。

v=randn(1,m);

v = v * sqrt(Pv);%产生平均值为0、方差为Pv的白噪声

% m = 1:N;

v = v(1:N);% 1000领出前

%绘图(m,v);标题('均值为0,方差为0.0965的白噪声');ylabel(' v(n)');xlabel(' n ');

v = v’;

%矢量初始化

x =零(1,N);

x(1)= v(1);%x(0)=v(0)

x(2)= v(2)-a 1 * v(1);% x(1)= v(1)-a 1 * v(0)

w =零(2,N);

w(:,1)=[0 0]';% w(0)=[0 0]';

x =零(2,N);

x(:,2)=[v(1)0]';% X(0)=[0 0]';X(1)=[v(0) 0]'

c =零(2,2 * N);

c(:,1:2)= 1/o . * I;%C(0)=1/o*I

e =零(1,N)';%定义误差向量

u =零(1,N);

g =零(2,N);

%根据RLS算法递归

对于n=1:N-2

x(n+2)= v(n+2)-a 1 * 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);%将存储从每次计算中获得的误差。

结束

结束

%求权向量和误差M倍的平均值。

wa 1 =零(N,1);wa2 =零(N,1);en =零(N,1);

对于k=1:M

wa1(:,1)=wa1(:,1)+w1(:,k);

wa2(:,1)=wa2(:,1)+w2(:,k);

en(:,1)=en(:,1)+e1(:,k);

结束

N = 1:N;

支线剧情(221)

plot(n,w(1,n),n,w(2,n));%对权重向量的变化曲线进行单次计算

xlabel(' n ');ylabel(' w(n)');标题(' W1 (n)和w2(n)的单一变化曲线(线性预测,RLS)')

支线剧情(222)

plot(n,wa1(n,1))。/M,n,wa2(n,1)。/M);%使100次来计算权重向量的平均曲线。

xlabel(' n ');ylabel(' w(n)');标题(' 100 w 1(n)和w2(n)'的平均变化曲线)

支线剧情(223)

plot(n,e(n,1))。^2);%对e 2曲线进行单次计算。

xlabel(' n ');ylabel('e^2');标题('计算一次E 2的变化曲线');

支线剧情(224)

plot(n,(en(n,1)/M)。^2);%做m次计算E ^ 2的平均变化曲线。

xlabel(' n ');ylabel('e^2');标题(‘100次计算E 2的平均变化曲线’);