急求:自适应联邦滤波算法的matlab仿真程序代码

急求:自适应联邦滤波算法的matlab仿真程序代码,第1张

clear

fs=1000;%采样频率1000hz

N=500;%采样点数

t=(0:1:N-1)/fs;

f=10;%正弦信号频率10hz

x=sin(2pift)+randn(size(t));%被随机信号干扰的正弦信号

b = fir1(31,05); %由b = fir1(31,05); 产生32阶滤波器系数

n = 01randn(1,500); % 通过以上滤波系统所加入的噪声

d = filter(b,1,x)+n; % 通过滤波器后的期望信号

delta = 0005; % 设置自适应滤波器其中一个步长因子为0005

ha = adaptfiltlms(32,delta);%求出系统的滤波器系数

[y,e] = filter(ha,x,d);

delta0=0001; %另一个步长因子为0001作对比

ha=adaptfiltlms(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=0001','delta=0005')

% subplot(2,1,1)

% plot(m,e0)

%

以上是基本的LMS算法

% 滤波型LMS算法滤波

M = 20; % 运行次数

N = 1000; % 信号的长度

n = 0:N-1;

s = sin(2pin/10); % 初始信号

u = s + 036randn(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 = 00065; % 初始更新步长因子

% 初始化前向滤波器的权向量

a(1:11) = [ 01642 , 01341 , 00529,-00624 , -01586 ,-01932 , -01555 , -00599 , 00584, 01229 , 01106];

% 滤波型LMS算法滤波

for j = (k + 1):M

u = s + 036randn(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)) + mue1(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 = (vare1vare)/M; % 统计平均意义下e(n)^2

estd1 = (estd1estd)/M; % 统计平均意义下学习曲线

% 滤波型LMS自适应滤波输出

figure(2);

plot(y);

title('mu = 00065时滤波型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]');

希望可以帮到你

里面有些代码有问题,可以参考,代码还是自己写:!

%基于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=0008;%定义白噪声方差

a1=-0195;a2=095;o=002;r=095;

m=5000;%产生5000个随机数

v=randn(1,m);

v=vsqrt(Pv);%产生均值为0,方差为Pv的白噪声

%m=1:N;

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

%plot(m,v);title('均值为0,方差为00965的白噪声');ylabel('v(n)');xlabel('n');

v=v';

%向量初使化

x=zeros(1,N);

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

x(2)=v(2)-a1v(1);%x(1)=v(1)-a1v(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,2N);

C(:,1:2)=1/oI;%C(0)=1/oI

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

u=zeros(1,N);

g=zeros(2,N);

%根据RLS算法进行递推

for n=1:N-2

x(n+2)=v(n+2)-a1x(n+1)-a2x(n);

X(:,n+2)=[x(n+1) x(n)]';

u(n)=X(:,n+1)'C(:,2n-1:2n)X(:,n+1);

g(:,n)=(C(:,2n-1:2n)X(:,n+1))/(r+u(n));

w(:,n+1)=w(:,n)+g(:,n)(x(n+1)-X(:,n+1)'w(:,n));

C(:,2n+1:2(n+1))=1/r(C(:,2n-1:2n)-g(:,n)X(:,n+1)'C(:,2n-1:2n));

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的平均变化曲线');

1首先将MAGNiTUDE文件夹中的LMS_INTLlic复制到你要安装软件的根目录下(你新建的一个文件夹里面,新建的文夹最好是英文名。)

2起动 TLLaunchexe

3选择"Install FLEXlm License Server114 now,先安装许可证,直接点next ,直到出现 A: 那个对话框。 把A:去掉。然后点Browse找到上面你新建的文件夹,确定,再点next 直到安完,点finish

4.再安装主程序,点Install TestLab now。当出现 license server:时输入7598@your hostname (例如我的是7598@IBM-THINK )然后点Next继续。

5.当出现一个很小的对话框问你要服务器名时,还是输入7598@your hostname。 点next ,再点finish。

6.后面的直接点next 就是,直到完成。

由于不可以传图,有些地方不是太清楚,但基本可以装好了。

开发程序时内部人员用的IMS(IP Multimedia Subsystem)是IP多媒体子系统,是一种全新的多媒体业务形式,它能够满足现在的终端客户更新颖、更多样化多媒体业务的需求。

以上就是关于急求:自适应联邦滤波算法的matlab仿真程序代码全部的内容,包括:急求:自适应联邦滤波算法的matlab仿真程序代码、求基于RLS算法和LMS的自适应均衡系统的MATLAB程序``、LMS Test Lab怎么安装等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10633804.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-10
下一篇2023-05-10

发表评论

登录后才能评论

评论列表(0条)

    保存