上次只是发表了MATLAB版本的LMS算法,这次将C语言版的LMS算法一并发表,其中涉及到雅克比公式求矩阵最大特征值的部分我将后续发表到博客中,此C语言版本是本人自己研究MATLAB语言,然后独自翻译成C语言完成的,为了完成自适应滤波器,使用了STM32F767作为开发板,完整压缩包我已上传,需要者可移步下载。

LMS.c

#include "LMS.h"

/* xn--------输入的信号序列(列向量)

* itr-------迭代次数,标量,默认为xn的长度,M

* en--------误差序列(itr*1)列向量

* dn--------所期望的响应序列(列向量)

* M---------滤波器的阶数(标量)

* mu--------收敛因子(步长)标量

* W---------滤波器权值矩阵,大小为M*itr

* yn--------实际输出序列(列向量)*/

/*LMS具体算法*/

float * LMS_Filter(int itr, const float *xn, const float *dn, double mu, int length)

{

static int i = 0;

static int k = 0;

static float y = 0.0;

static float en[F_COUNT];

static float W[M][F_COUNT];

static float x[M];

static float yn[F_COUNT];

/*创建一个en全零矩阵,en(k)表示第k次迭代时预期输出与实际输入的误差*/

for (i=0; i

{

en[i] = 0;

}

/*创建一个W全零矩阵,每一行代表一个加权参量,每一列代表一次迭代*/

for (i=0; i

for (k=0; k

W[i][k] = 0;

/*创建一个x全零矩阵*/

for (i=0; i

x[i] = 0;

/*迭代计算*/

for (k=M; k<=itr; k++)

{

/* 滤波器M个抽头的输入:从xn第k-1个值倒序取出M个样点的值放入x

* y为滤波器输出:W的第K-2列与x的积的和*/

for (i=0; i

{

x[i] = xn[k-i-1];

y += W[i][k-2] * x[i];

}

en[k-1] = dn[k-1] - y; //第k次迭代的误差

/*滤波器权值计算的迭代式*/

for (i=0; i

{

W[i][k-1] = W[i][k-2] + 2*mu*en[k-1]*x[i];

}

y = 0.0;

}

/*创建一个yn全无穷大矩阵,维数与xn一样*/

for (i=0; i

{

yn[i] = 0.0;

}

/*求最优时滤波器的输出序列*/

for (k=M; k<=length; k++)

{

for (i=0; i

{

x[i] = xn[k-i-1];

y += W[i][itr-1]*x[i];

}

yn[k-1] = y;

y = 0.0;

}

return yn;

}

LMS.h

#ifndef _LMS_H_

#define _LMS_H_

#include

#include

#include

#include

#define F_COUNT 1024

#define M 20

float * LMS_Filter(int itr, const float *xn, const float *dn, double mu, int length);

#endif

标签:滤波器,LMS,xn,float,C语言,include,define

来源: https://blog.csdn.net/gumanren/article/details/89817453

lms c语言,LMS算法实现自适应滤波器(C语言版)相关推荐

  1. LMS算法实现自适应滤波器

    LMS算法实现自适应滤波器 // LMS.c#include "LMS.h"/* xn--------输入的信号序列(列向量)* itr-------迭代次数,标量,默认为xn的长 ...

  2. c语言紧凑算法的内存分配,C语言(第二章.1)算法与数据结构A.ppt

    C语言课件(第二章.1)算法与数据结构A资料 课程设置目的 本课程是非计算机专业学生的技术基础课,通过本课程的学习,应使学生掌握传统的结构化程序设计的一般方法,以C为语言基础,培养学生严谨的程序设计思 ...

  3. c语言 最小值算法,最常用的c语言算法

    最常用的c语言算法 以下是YJBYS整理的关于C语言最常用的算法内容,欢迎学习.希望可以为您带来帮助! 一.基本算法 1.交换(两量交换借助第三者) 例1.任意读入两个整数,将二者的值交换后输出. m ...

  4. 时间片轮转算法程序c语言,时间片轮转算法和优先级调度算法 C语言模拟实现...

    满意答案 真不容易啊,怕是没人弄了! 优先级调度算法程序: #include "stdio.h" #include "stdlib.h" #include &q ...

  5. c语言小学生算法,急求:C语言小学生算法练习软件实现的任务:面向小学生,随机选择两个整数进行加、减、乘、除,要求学生解答。设计内容:1、电...

    共回答了16个问题采纳率:100% #include #include #include #include int sumScore = 0; int corrN = 0;//全局变量 //总的分数 ...

  6. c语言常用算法累加法例题,C语言第三次模拟练习题部分解答.docx

    单项选择 号:13334 若有如下语句 int x=3; do {printf (,,%d\n/,, x-=2) ;}while(! (--x)); 则上面程序段o A.输出的是1 B.输出的是1和- ...

  7. c 语言矩阵求逆算法,矩阵的逆 C 语言 算法一

    #include #include voidmain() {inti,j;intdimension;double deterValue=1;double **array,**deterArray, * ...

  8. LMS自适应滤波器算法及其改进

    -- 年初DSP课程期末设计时为了答辩做的PPT,内容背的滚瓜烂熟,给老师留下了深刻的印象,想必整个系也没有第二个人像我这么上心了,因此最后决定把PPT放到博客上:此外因为不希望PPT上有太多字,所以 ...

  9. 自适应滤波器:最小均方误差(LMS)滤波器

    自适应算法所采用的最优准则有最小均方误差(LMS)准则,最小二乘(LS)准则.最大信噪比准则和统计检测准则等,其中最小均方误差(LMS)准则和最小二乘(LS)准则是目前最为流行的自适应算法准则. x( ...

最新文章

  1. Unity中创建本地多人游戏完整案例视频教程 Learn To Create A Local Multiplayer Game In Unity
  2. 用上 RocketMQ,系统性能提升了 10 倍!
  3. Uncaught ReferenceError: layer is not defined
  4. 【物联网】WiFi基础知识
  5. Dotnet Core IHttpClientFactory深度研究
  6. java多线程知识汇总(三)如何选择锁?如何加锁
  7. Castle ActiveRecord学习笔记四:各种映射
  8. PLSQL Developer 特点
  9. 筛选数据库_网络药理学(2)| 使用TCMSP数据库检索中药成分并基于ADME参数进行成分筛选...
  10. html中在线取色器,在线取色器(ColorPicker)的制造方式
  11. [计算流体力学] NS 方程的速度压力法差分格式
  12. 构造体中变量后面的冒号_flow中问号在参数后面和在冒号有什么区别?declare type的作用是?看英文文档有点一知半解...
  13. Google已将 xxx 标记为恶意程序并阻止安装的解决办法
  14. win7计算机自动关机设置在哪里设置方法,win7系统怎么设置每天自动关机|win7创建定时关机计划的方法...
  15. tumblr_使用CSS网格重新设计基于卡片的Tumblr布局
  16. Blender烘焙贴图生成静态真实场景
  17. Android中连接MQTT服务器实现订阅主题并接收消息推送在通知栏显示(附代码下载)
  18. HMC5883L 电子指南针
  19. 如何有效设计你的调查问卷?
  20. STM32+ESP8266+MQTT连接阿里云服务器(四、STM32连接阿里云平台)

热门文章

  1. 关于时间、物质结构、四维空间的猜想
  2. 【观察】亚马逊云科技发布中国战略背后,是“在中国”到“懂中国”的蜕变...
  3. js运动(一)—— sidebar(分享到)
  4. 安居客爬虫+分析+回归
  5. UOS 1050e ARM架构(linux)安装TP-LINK TL-WN823N免驱版无线网卡驱动
  6. Tello SDK 开发避坑指南(持续更新)
  7. Win10没有安全选项卡怎么办 安全选项卡在哪里
  8. 图灵机Turing Machine
  9. 形式系统(Formale System)-SAT问题
  10. 机器视觉OpenCV库基础教程(一)