程序1:基本LMS算法

% 该程序实现时域LMS算法,并用统计的方法仿真得出不同步长下的收敛曲线

clear % 清空变量空间

g=100; % 统计仿真次数为g

N=1024; % 输入信号抽样点数N

k=128; % 时域抽头LMS算法滤波器阶数

pp=zeros(g,N-k); % 将每次独立循环的误差结果存于矩阵pp中,以便后

% 面对其平均

u=0.001; % 收敛因子

for

q=1:g

t=1:N;

a=1;

s=a*sin(0.5*pi*t); % 输入单频信号s

figure(1);

plot(t,real(s)); % 信号s时域波形

title('信号s时域波形');

xlabel('n');

ylabel('s');

axis([0,N,-a-1,a+1]);

xn=awgn(s,3);

% 加入均值为零的高斯白噪声,信噪比为3dB

% 设置初值

y=zeros(1,N); % 输出信号y

y(1:k)=xn(1:k); % 将输入信号xn的前k个值作为输出y的前k个值

w=zeros(1,k); % 设置抽头加权初值

e=zeros(1,N); % 误差信号

%

用LMS算法迭代滤波

for

i=(k+1):N

XN=xn((i-k+1):(i));

y(i)=w*XN';

e(i)=s(i)-y(i);

w=w+u*e(i)*XN;

end

pp(q,:)=(e(k+1:N)).^2;

end

for b=1:N-k

bi(b)=sum(pp(:,b))/g; % 求误差的统计平均

end

figure(2); % 算法收敛曲线

t=1:N-k;

plot(t,bi);

hold

off % 将每次循环的图形显示结果保存下来

程序2 归一化LMS算法

MATLAB程序实现如下:

1.

NLMS算法1次实验

% N=训练序列长度

% u=收敛因子

clear;

N=500;

db=20;

sh1=sqrt(10^(-db/10));

u=1;

error_s=zeros(1,N);

for loop=1:1

w=0.05*ones(1,11)';

V=sh1*randn(1,N );

K=randn(1,N)-0.5;

x=sign(K);

for

n=3:N;

M(n)=0.3*x(n)+0.9*x(n-1)+0.3*x(n-2);

end

z=M+V;

for

n=8:N;

d(n)=x(n-7);

end

a(1)=z(1)^2;

for

n=2:11;

a(n)=z(n).^2+a(n-1);

end

for

n=12:N;

a(n)=z(n).^2-z(n-11)^2+a(n-1);

end

for

n=11:N;

z1=[z(n)

z(n-1) z(n-2) z(n-3) z(n-4) z(n-5) z(n-6) z(n-7) z(n-8) z(n-9)

z(n-10)]';

y(n)=w'*z1;

e(n)=d(n)-y(n);

w=w+u./(eps+a(n)).*z1.*conj(e(n));

end

error_s=error_s

+e.^2;

end

w

error_s=error_s./1;

n=1:N;

plot(n,error_s);

xlabel('n

(当u=1;DB=20时)');

ylabel('e(n)^2');

title('NLMS算法1次实验误差平方的均值曲线');

2.NLMS算法20次实验

clear;

N=500;

db=20;

sh1=sqrt(10^(-db/10));

u=1;

error_s=zeros(1,N);

for loop=1:20

w=0.05*ones(1,11)';

V=sh1*randn(1,N );

K=randn(1,N)-0.5;

x=sign(K);

for

n=3:N;

M(n)=0.3*x(n)+0.9*x(n-1)+0.3*x(n-2);

end

z=M+V;

for

n=8:N;

d(n)=x(n-7);

end

a(1)=z(1)^2;

for

n=2:11;

a(n)=z(n).^2+a(n-1);

end

for

n=12:N;

a(n)=z(n).^2-z(n-11)^2+a(n-1);

end

for

n=11:N;

z1=[z(n)

z(n-1) z(n-2) z(n-3) z(n-4) z(n-5) z(n-6) z(n-7) z(n-8) z(n-9)

z(n-10)]';

y(n)=w'*z1;

e(n)=d(n)-y(n);

w=w+u./(eps+a(n)).*z1.*conj(e(n));

end

error_s=error_s

+e.^2;

end

w

error_s=error_s./20;

n=1:N;

plot(n,error_s);

xlabel('n

(当u=1;DB=20时)');

ylabel('e(n)^2');

title('NLMS算法20次实验误差平方的均值曲线');

基于LMS算法的系统辨识

clear

clc

ee=0;

fs=800;

det=1/fs;

f1=100;

f2=200;

t=0:det:2-det;

x=randn(size(t))+cos(2*pi*f1*t)+cos(2*pi*f2*t);

%未知系统

[b,a]=butter(5,150*2/fs);

d=filter(b,a,x);

%自适应FIR滤波器

N=5;

delta=0.06;

M=length(x);

y=zeros(1,M);

h=zeros(1,N);

for

n=N:M

x1=x(n:-1:n-N+1);

y(n)=h*x1';

e(n)=d(n)-y(n);

h=h+delta.*e(n).*x1;

end

X=abs(fft(x,2048));

Nx=length(x);

kx=0:800/Nx:(Nx/2-1)*(800/Nx);

D=abs(fft(d,2048));

Nd=length(D);

kd=0:800/Nd:(Nd/2-1)*(800/Nd);

Y=abs(fft(y,2048));

Ny=length(Y);

ky=0:800/Ny:(Ny/2-1)*(800/Ny);

figure(1);

subplot(3,1,1)

plot(kx,X(1:Nx/2));xlabel('Hz')

title('原始信号频谱')

subplot(3,1,2)

plot(kd,D(1:Nd/2))

title('经未知系统后信号频谱');xlabel('Hz')

subplot(3,1,3)

plot(ky,Y(1:Ny/2))

title('经自适应FIR滤波器后信号频谱');xlabel('Hz')

matlab中lms m,LMS算法仿真(Matlab)相关推荐

  1. matlab中emd函数,EMD算法的matlab程序介绍解析

    <EMD算法的matlab程序介绍解析>由会员分享,可在线阅读,更多相关<EMD算法的matlab程序介绍解析(6页珍藏版)>请在人人文库网上搜索. 1.此版本为 ALAN 版 ...

  2. matlab中值滤波法算法,基于MATLAB中值滤波算法的优化与实现

    总第238期2014年第4期 舰 船 电 子 工 程 Ship Electronic Engineering Vol.34No.437 基于 MATLAB中值滤波算法的优化与实现* 赵建春 刘力源 ( ...

  3. MATLAB 用LMS算法实现语音去噪,在Matlab中实现基于LMS算法语音信号去噪

    ComputerKnowledgeand Technology 电脑知识与技术 第10卷第32期 (2014年11月) 本栏目责任编辑:谢媛媛软件设计开发 在Matlab中实现基于LMS算法语音信号去 ...

  4. (转载)基于TDOA声源定位算法仿真–MATLAB仿真

    (转载)基于TDOA声源定位算法仿真–MATLAB仿真 转载自:https://blog.xxcxw.cn/archives/28 声源定位算法是利用麦克风阵列进行声音定位,属于宽带信号,传统的MUS ...

  5. MATLAB路面裂缝检测识别算法仿真

    MATLAB路面裂缝检测识别算法仿真 在道路养护中,路面的裂缝是最常见的问题之一.对于路面裂缝的自动化检测和识别已经成为了一个研究热点.本文提出的基于MATLAB的路面裂缝检测识别算法能够减少人力.时 ...

  6. 信号分选SDIF算法仿真matlab

    信号分选SDIF算法仿真matlab SDIF算法介绍 SDIF算法仿真 SDIF算法部分代码 SDIF算法介绍 序列差直方图法(SDIF)是一种基于CDIF的改进算法.SDIF与CDIF的主要区别是 ...

  7. matlab的数值计算方法,数值计算方法中的一些常用算法的Matlab源码

    数值计算方法中的一些常用算法的Matlab源码,这些程序都是原创,传上来仅供大家参考,不足之处请大家指正,切勿做其它用途-- 说明:这些程序都是脚本函数,不可直接运行,需要创建函数m文件,保存时文件名 ...

  8. MATLAB 中的机械臂算法——运动学

    MATLAB 中的机械臂算法--运动学 机械臂算法 MATLAB 在 2016 年就推出了 Robotics System Toolbox(RST),其中有很多关于机械臂方面的算法.而且随着客户需求的 ...

  9. matlab中 y =ft(x)的意思,matlab中y=fft(x)语句的意思

    matlab傅里叶变换中fft(x,n),x,n分别是什么含义? fft(x,n)是一维快速傅里叶变换,x相当于信号,n是变换点数.离散傅里叶变换DFT的快速算法就是FFT. matlab中FFT函数 ...

  10. matlab中e用什么表示什么,matlab中e怎么表示

    方法/步骤 1.自然数对数 log(x) 我们在MATLAB主窗口中输入a1=log(2.7183),回车,我们可以看到a1近似为1,e约等 于2. MATLAB中 如何输入对数函数? 方法/步骤 1 ...

最新文章

  1. brew gd php_PHPBrew 使用指南
  2. 浅析Unity中的Enlighten与混合光照
  3. 元气森林难撕“网红”标签
  4. windows2008文件服务器端口,windows server 2008 文件服务器不定期出现大量CLOSE_WAIT状态的连接,必须重启服务器,客户端才能访问共享。...
  5. Java ASM与Javassit
  6. 远控免杀专题6---Venom免杀
  7. jQuery——高级(js对象、json、ajax)
  8. 邀请和建议的回答_46
  9. do...while(); 语句在宏定义中的应用。
  10. [生活日记] 社会真的这么乱?尼姑也行骗,道德何在
  11. 动漫版宫心计:快看漫画VS动漫之家
  12. 【历史上的今天】3 月 1 日:个人计算机鼻祖问世;天涯社区上线;Shell 排序算法作者诞生
  13. PowerPoint.Application win32 操作ppt 复制 新建 插入图片
  14. 给ssh服务添加谷歌双重认证
  15. 常识介绍---什么是rss
  16. 如何修改默认的FTP帐号或密码
  17. FM,FMM,deepFFM模型总结,深度排序模型
  18. 论 Erda 的安全之道
  19. UTL_FILE详解
  20. 拼多多关键字搜索,拼多多商品列表,根据关键词取商品列表

热门文章

  1. python opencv实现 tiff转raw格式以及扩充体积补零
  2. 23款网盘全都能变成本地硬盘
  3. 给编辑器设置个自定义背景
  4. MSDC 4.3 接口规范(30)
  5. 学简单python好学吗_python好学吗
  6. java自定义窗口,java 自定义窗口
  7. java五子棋小游戏含免费源码
  8. PC端实现微信支付功能(Vue2.0)
  9. 在微信小程序中制作的登录功能一定要考虑不同的入口问题
  10. 提升团队战斗力的要点