
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怎么安装等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)