LMS波束形成代码(共11页).doc
精选优质文档-倾情为你奉上LMS波束形成代码(matlab)LMS算法的仿真程序:%lms 算法clear allclose allhold 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 : Nu = inp(n:-1:n-sysorder+1) ;% u的矩阵y(n)= w' * u;%系统输出e(n) = d(n) - y(n) ;%误差if n < 20mu=0.32;elsemu=0.15;endw = w + mu * u * e(n) ;%迭代方程end%检验结果for n = N+1 : totallengthu = inp(n:-1:n-sysorder+1) ;y(n) = w' * u ;e(n) = d(n) - y(n) ;%误差endhold onplot(d)plot(y,'r');title('系统输出') ;xlabel('样本')ylabel('实际输出')figuresemilogy(abs(e) ;% e的绝对值坐标title('误差曲线') ;xlabel('样本')ylabel('误差矢量')figure%作图plot(h, 'k+')hold onplot(w, 'r*')legend('实际权矢量','估计权矢量')title('比较实际和估计权矢量') ;axis(0 6 0.05 0.35)2.NLMS算法的仿真程序:%lms 算法clear allclose allhold 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 : Nu = inp(n:-1:n-sysorder+1) ;% u的矩阵y(n)= w' * u;%系统输出r(n)=u'*u;%自相关矩阵e(n) = d(n) - y(n) ;%误差fai=.0001;%修正参数,为防止u'*u过小导致步长值太大而设置的if n < 20mu=0.32;elsemu=0.15;endw = w + mu * u * e(n)/(r(n)+fai) ;%迭代方程end%检验结果for n = N+1 : totallengthu = inp(n:-1:n-sysorder+1) ;y(n) = w' * u ;e(n) = d(n) - y(n) ;%误差endhold onplot(d)plot(y,'r');title('系统输出') ;xlabel('样本')ylabel('实际输出')figuresemilogy(abs(e) ;% e的绝对值坐标title('误差曲线') ;xlabel('样本')ylabel('误差矢量')figure%作图plot(h, 'k+')hold onplot(w, 'r*')legend('实际权矢量','估计权矢量')title('比较实际和估计权矢量') ;axis(0 6 0.05 0.35)3.RLS算法的仿真程序:% RLS算法randn('seed', 0) ;rand('seed', 0) ;NoOfData = 8000 ; % Set no of data points used for trainingOrder = 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 Adaptationfor 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('误差权矢量') ;4.自适应均衡器的仿真程序:% Illustration of the conventional RLS algorithmclose all;W=2.9;Nexp=10;N=2000;Nmc=1; % Number of ensemble realizationsM=11;%抽头系数lambda=0.99;%遗忘因子varv=0.001;%噪声方差h=zeros(3,1);%h的初始化er=zeros(N,Nmc);%er的初始化h(1)=0.5*(1+cos(2*pi*(1-2)/W);h(2)=0.5*(1+cos(2*pi*(2-2)/W);h(3)=0.5*(1+cos(2*pi*(3-2)/W);% 学习曲线hc=0 h(1) h(2) h(3)'n0=7;t=(1:N)'for i=1:Nmcy=sign(rand(N,1)-0.5);%输入信号v=sqrt(varv)*randn(N,1);%噪声信号x=filter(hc,1,y)+v;%信号混合x=zeros(M-1,1);x;%x矩阵yd=zeros(N+M-1,1); %延迟信号初始化e=yd;yd(n0+M-1:N+M-1)=y(1:N-n0+1);% CRLS 算法% Initializationlambda=0.98;P=(10-3)*eye(M,M);c=zeros(M,1);g=c;glambda=g;% 迭代范围for n=M:M+N-1xn=flipud(x(n-M+1:n);glambda=P*xn;alphal=lambda+conj(glambda')*xn;g=glambda/lambda;a(n)=1-conj(g')*xn;P=(P-g*conj(glambda')/lambda;P=(P+P')/2;e(n)=yd(n)-conj(c')*xn;c=c+g*conj(e(n);endendeplot=e(M:M+N-1).2;subplot(2,1,1), plot(t,abs(eplot)ylabel('|e(n)|2');xlabel('n');subplot(2,1,2), plot(t,a(M:M+N-1);ylabel('alpha(n)');xlabel('n');5.自适应陷波器的仿真程序:N=400; %总采样长度t=0:N-1; %时间的变化范围s=sin(2*pi*t/20); %输入信号A=0.5; %干扰信号的幅值fai=pi/3;%干扰信号的相移n=A*cos(2*pi*t/10+fai);%干扰信号x=s+n;%信号混合subplot(2,2,1);%作第一子图plot(t,s);subplot(2,2,2); %作第二子图plot(t,x);x1=cos(2*pi*t/10);x2=sin(2*pi*t/10);%初始化w1=0.1;w2=0.1;e=zeros(1,N);y=0;u=0.05;%迭代步长for i=1:Ny=w1*x1(i)+w2*x2(i);e(i)=x(i)-y;%误差信号w1=w1+u*e(i)*x1(i);%迭代方程w2=w2+u*e(i)*x2(i);%迭代方程endsubplot(2,2,3); %作第三子图plot(t,e);subplot(2,2,4); %作第四子图plot(t,s-e); 专心-专注-专业