一:LMS算法说明:

全称Least mean square 算法,又叫最小均方算法,用于修正滤波器参数使均方差(Mean Square Error,MSE)达到最小,均方差公式如下所示: 
                                    

步骤:

(1)设置变量和参量: 
X(n)为输入向量,或称为训练样本 
W(n)为权值向量 
b(n)为偏差 
d(n)为期望输出 
y(n)为实际输出 
η为学习速率 
n为迭代次数 
(2)初始化,赋给w(0)各一个较小的随机非零值,令n=0 
(3)对于一组输入样本x(n)和对应的期望输出d,计算 
e(n)=d(n)-X^T(n)W(n) 
W(n+1)=W(n)+ηX(n)e(n) 
(4)判断是否满足条件,若满足算法结束,若否n增加1,转入第(3)步继续执行

二、算法实现——LMS算法的代码:

  1. const unsigned int nTests   =4;
  2. const unsigned int nInputs  =2;
  3. const double rho =0.005;
  4. struct lms_testdata
  5. {
  6. doubleinputs[nInputs];
  7. doubleoutput;
  8. };
  9. double compute_output(constdouble * inputs,double* weights)
  10. {
  11. double sum =0.0;
  12. for (int i = 0 ; i < nInputs; ++i)
  13. {
  14. sum += weights[i]*inputs[i];
  15. }
  16. //bias
  17. sum += weights[nInputs]*1.0;
  18. return sum;
  19. }
  20. //计算均方差
  21. double caculate_mse(constlms_testdata * testdata,double * weights)
  22. {
  23. double sum =0.0;
  24. for (int i = 0 ; i < nTests ; ++i)
  25. {
  26. sum += pow(testdata[i].output -compute_output(testdata[i].inputs,weights),2);
  27. }
  28. return sum/(double)nTests;
  29. }
  30. //对计算所得值,进行分类
  31. int classify_output(doubleoutput)
  32. {
  33. if(output> 0.0)
  34. return1;
  35. else
  36. return-1;
  37. }
  38. int _tmain(int argc,_TCHAR* argv[])
  39. {
  40. lms_testdata testdata[nTests] = {
  41. {-1.0,-1.0, -1.0},
  42. {-1.0, 1.0, -1.0},
  43. { 1.0,-1.0, -1.0},
  44. { 1.0, 1.0,  1.0}
  45. };
  46. doubleweights[nInputs + 1] = {0.0};
  47. while(caculate_mse(testdata,weights)> 0.26)//计算均方差,如果大于给定值,算法继续
  48. {
  49. intiTest = rand()%nTests;//随机选择一组数据
  50. doubleoutput = compute_output(testdata[iTest].inputs,weights);
  51. doubleerr = testdata[iTest].output - output;
  52. //调整输入端的权值
  53. for (int i = 0 ; i < nInputs ; ++i)
  54. {
  55. weights[i] = weights[i] + rho * err* testdata[iTest].inputs[i];
  56. }
  57. weights[nInputs] = weights[nInputs] +rho * err;
  58. cout<<"mse:"<<caculate_mse(testdata,weights)<<endl;
  59. }
  60. for(int w = 0 ; w < nInputs + 1 ; ++w)
  61. {
  62. cout<<"weight"<<w<<":"<<weights[w]<<endl;
  63. }
  64. cout<<"\n";
  65. for (int i = 0 ;i < nTests ; ++i)
  66. {
  67. cout<<"rightresult:êo"<<testdata[i].output<<"\t";
  68. cout<<"caculateresult:" << classify_output(compute_output(testdata[i].inputs,weights))<<endl;
  69. }
  70. //
  71. char temp ;
  72. cin>>temp;
  73. return 0;
  74. }

信源编码作业——LMS算法相关推荐

  1. Matlab算法DSP移植验证,DSP计算机作业 自适应噪声抵消LMS算法Matlab仿真

    [实例简介] 自适应噪声抵消LMS算法Matlab仿真,DSP计算机作业 数字信号处理 自适应 1) 借助MATLAB画出误差性能曲面和误差性能曲面的等值曲线: 2) 写出最陡下降法, LMS算法的计 ...

  2. 4)自适应滤波(一)[LMS算法]

    目录 一.LMS算法 1.滤波器--改变信号频谱 模拟滤波器: 数字滤波器: 2.自适应滤波器简介 自适应滤波器: 非自适应滤波器: 自适应滤波器应用: 自适应滤波场景: 自适应滤波处理逻辑(处理非平 ...

  3. 【老生谈算法】matlab实现LMS算法的自适应滤波算法源码——自适应滤波

    基于matlab的LMS算法的自适应滤波 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 序号 文档(点击下载) 本项目文档 [老生谈算法]基于LMS的MATLAB大作业.do ...

  4. 操作系统进程调度算法(先来先服务,短作业优先算法(SJF))linux下(附源码)

    先来先服务算法(FCFS) FCFS是最简单的调度算法,既可以用作作业调度,也可以用作进程调度 这种算法优先考虑系统中等待时间最长的作业(进程),而不管作业所需执行时间长短, 做法是从后备队列中选择几 ...

  5. matlab信道均衡,使用LMS算法做信道均衡时,更换信道传递函数效果很差

    clear; clc; % 1.产生长度为2000的0/1随机序列,进行BPSK调制,通过冲激响应为h[1,0.8,0.3]的信道传送,信道的高斯噪声为20dB. %用LMS算法进行均衡输出,均衡抽头 ...

  6. 非抢占式优先算法例题_非抢占短作业优先算法源代码(C语言)

    #include #include #define MAX 5 //进程数 /*短作业优先算法*/ struct pro { int num; //进程名 int arriveTime; //到达时间 ...

  7. 一、操作系统——处理机(作业)调度算法:先来先服务算法FCFS、最短作业优先算法SJF(非抢占式)、 最短剩余时间优先算法SRTN(抢占式)、最高响应比优先算法HRRN

    各种调度算法的学习思路: 调度算法的评价指标: 一.先来先服务算法(FCFS):First Come First Serve 二.最短作业优先算法(SJF非抢占式):Shortest Job Firs ...

  8. matlab 高斯迭代代码_主动降噪与双麦降噪原理与实现前篇——LMS算法的matlab实现...

    LMS算法作为主动降噪与双麦降噪的基础算法,还是非常重要的,这里不多说原理了,后面我慢慢更这一部分. 直接上代码,建议感兴趣的朋友先看看原理再看代码: clear

  9. matlab blms算法程序,LMS算法Matlab程序

    LMS滤波器MATLAB函数 function [yn,W,en]=LMSPrediction(xn,M,mu,k) % LMS(Least Mean Squre)算法 % 输入参数: % xn 输入 ...

最新文章

  1. 10G_Ethernet_02 10G Ethernet Subsystem 简介
  2. LeetCode: Convert BST to Greater Tree
  3. go json的key为数字怎么解析_golang向interface{}解析json时把所有的数字都当成float64...
  4. 类python中高级用法
  5. 软考信息系统项目管理师_信息系统项目管理基础---软考高级之信息系统项目管理师009
  6. 设置角速度及生成四元数及利用刚体
  7. 机器人正运动学(7)—— 连杆坐标系与DH参数
  8. 计算机一级要下什么软件练习,国家计算机一级MS OFFICE练习软件
  9. 一些基本数字图像处理算法
  10. Polkit授权管理
  11. 程序员必看电影片单,高分烧脑假期必备!
  12. 数据分析必备43个Excel函数
  13. QRCode.js:使用 JavaScript 生成二维码
  14. vivo手机拍照有什么技巧,如何拍出精美照片?
  15. css中clip属性的使用
  16. java字符串流与管道流
  17. 应用和产业齐步走(转)
  18. Appinum:在使用安卓模拟器定位页面元素时启动uiautomatorviewer.bat ,但是报错: Error while obtaining UI hierarchy XML file: c
  19. sql server查询死锁语句
  20. Dockerharbor安装 镜像私有仓库上床和拉取

热门文章

  1. android 来电拒接_安卓手机怎么设置拦截陌生电话
  2. 使用消息摘要算法提升密码安全性
  3. 怎样把PDF文件转换成JPG格式保存
  4. 视频教程-VR局域网对战【捕鱼猎手】实战视频教程(上)-Unity3D
  5. 论文笔记-Real-Time MDE using Synthetic Data with Domain Adaptation via Image Style Transfer
  6. vue+elementUI实现自定义表单模板组件(二)
  7. 考研政治80分复习经验帖
  8. 计算机学院学生管理制度,计算机学院教学管理规章制度.doc
  9. java毕业设计东方水处理厂原材料仓库管理系统Mybatis+系统+数据库+调试部署
  10. c语言有趣的图形,数图形