自适应滤波器

2023-05-16

1、LMS Filter模块仿真时,输出会发散,主要是mu值选取不合适,选取比较小的值就可以了

2、可以把网上的m文件通过 matlab coder工具直接转为C文件(不能直接使用,可以对比参考)

3、修改了网上的C代码可供参考

#include "LMS.h"

/* xn--------输入的信号序列(列向量)
 * itr-------迭代次数,标量,默认为xn的长度,M<itr<sizeof(xn)
 * 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<itr; i++)
    {
        en[i] = 0;
    }

    /*创建一个W全零矩阵,每一行代表一个加权参量,每一列代表一次迭代*/
    for (i=0; i<M; i++)
        for (k=0; k<itr; k++)
            W[i][k] = 0;

    /*创建一个x全零矩阵*/
    for (i=0; i<M; 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<M; 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<M; 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<itr; i++)
    {
        yn[i] = 0.0;
    }

    /*求最优时滤波器的输出序列*/
    for (k=M; k<=length; k++)
    {
        for (i=0; i<M; i++)
        {
            x[i] = xn[k-i-1];
            y += W[i][k-2]*x[i];
        }

        yn[k-1] = y;
        y = 0.0;

    }

    return yn;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自适应滤波器 的相关文章

  • 用C语言做很简单的飞机游戏

    首先 xff0c 可以通过第一步的 xff0c 通过空格和换行来显示出飞机 include lt stdio h gt include lt stdlib h gt int main int pox poy int x 61 20 int
  • 核心案例|中国民用航空飞行学院半实物飞行仿真平台

    项目名称 xff1a 无人机半实物飞行仿真平台 场 地 xff1a 室内 关 键 词 xff1a 无人机 仿真平台 飞行控制 核心案例中国民用航空飞行学院航空电子电气学院 01 项目背景 目前在无人系统众多重点方向开展研究时 xff0c 基
  • 使用高速视觉反馈的无人机自主目标跟踪

    在无人机视觉系统的常规研究中 xff0c 用于基于视觉的导航的视觉同步定位和映射 xff08 Visual SLAM xff09 和视觉里程计 xff08 VO xff09 是主要课题 V SLAM技术构建无人机经过的周围环境的实时地图 x
  • 6款常见的无人机仿真开发平台(附超详细特点功能对比)

    随着无人机与无人集群的快速发展 xff0c 开发者对于无人机系统仿真测试环境的需求也日渐显现 本文整理了几款常见的无人机仿真平台 xff0c 旨在为开发者提供一款更为易用 通用且真实可靠的平台 无人机与无人集群的研制应用快速发展 xff0c
  • 使用嵌入式无人机平台在大地形场景中进行机载实时密集重建

    大场景中的实时密集重建仍面临一些挑战 有两个主要的未解决问题导致应用受限 首先 xff0c 由于视差不足 xff0c 大场景或远距离目标的3D重建难以获得稳定的精度 其次 xff0c 随着大场景数据量的增加 xff0c 由于计算复杂度与优化
  • 猿创征文 | 一文看懂!无人机集群半物理仿真系统的7大模块拆解,超详细!

    在无人机集群研究领域 xff0c 仿真验证技术可以高效且低廉的对算法理论 xff0c 极大的缩短研制周期 xff0c 降低研制成本 全数字仿真技术和半物理仿真技术是仿真验证技术的两种主要实现方式 xff0c 本篇带你快速了解 无人机集群半物
  • SupSLAM:使用SuperPoint用于无人机的鲁棒视觉惯性 SLAM 系统

    近年来 xff0c 使用机器学习技术进行特征提取的现代基于特征的 SLAM受到越来越多的关注 xff0c 并有望在几乎所有机器人工作环境中超越传统方法 这种方法利用经过训练的网络来学习关键点 xff0c 从而增强视觉SLAM数据关联的鲁棒性
  • 使用强化学习和YOLOFlow实现基于自主无人机的目标搜索、跟踪

    搜索和救援行动发生在自然灾害期间或之后 xff0c 寻找受害者目标并跟踪他们 xff0c 直到救援队到达撤离 无人机是该应用不可或缺的工具 xff0c 因为它们可以帮助在关键 时间敏感的任务中找到目标 它们可以携带各种传感器 xff0c 并
  • 行业前沿|无人机视觉自主导航发展及视觉智能开发支撑平台介绍

    01视觉自主导航技术基本介绍 近年来 xff0c 无人机在多领域表现出重要应用价值 目前 xff0c 无人机如何在未知封闭 无辅助导航支撑的环境中 xff0c 达成 在哪里 和 环境描述 并自主智能地完成特定任务 xff0c 是一个重要的研
  • 基于图像拼接的无人机自主导航实时SLAM

    大多数无人机利用全球导航卫星系统 xff08 GNSS xff09 技术和惯性传感器 xff08 INS xff09 来估计自己的地理空间定位 无人机通过GNSS接收器进行增强 xff0c 这些接收器受益于从卫星发射的接收时间无线电信号来计
  • jar 压缩解压缩

    JAR包是Java中所特有一种压缩文档 其实大家就可以把它理解为 zip包 当然也是有区别的 JAR包中有一个META INF MANIFEST MF文件 当你找成JAR包时 它会自动生成 JAR包是由JDK安装目录 bin jar exe
  • Inverse elbow manipulator的正逆运动

    Inverse elbow manipulator 该结构同样是6 DOF xff0c 只是后面三个关节不是重合 这样子的结构 xff0c 工作空间更大 正运动好做 xff0c 逆运动还在推导中
  • 使用IMU进行状态估计及进阶

    文章目录 前言基本思想一 姿态估计1 1 通过6轴IMU来进行姿态估计的入门级方法1 1 1 通过加速度计计算姿态1 1 2 引入陀螺仪来得到更好的姿态估计 1 2 四元数解算姿态角解析 二 姿态估算与滤波的关系2 1 状态方程和观测方程2
  • Mujoco-小球建模与控制

    视频教程 xff1a https www bilibili com video BV1e44y1H7Mn 资源请到tiny cc mujoco下载 涉及内容 本次课程制作了一个简单的小球模型 然后对小球进行简单的模拟 xff0c 并演示了一
  • Mujoco-欠驱动的二阶单摆的LQR控制

    MuJoCo Lec7 span class token keyword void span span class token function f span span class token punctuation span span c
  • 四元数姿态计算

    本文基本上就是 1 的注解 一基本概念 1 1 四元数的定义 Quaternion A quaternion is a four dimensional complex number 四元数是一个四维的复数 写成行向量形式的话 q 61 q
  • Mujoco的关节与外力和驱动器

    核心公式 xff1a M qacc 43 qfrc bias 61 qfrc applied 43 ctrl M xff1a 惯性矩阵 qacc 加速度 qfrc bias 科里奥利矩阵和重力矩阵之和 xff1a qfrc bias 61
  • F28069的cpu定时器

    工程搭建参考 xff1a https blog csdn net feisy article details 126380289 F28069有三个32位的CPU定时器 xff1a 0 1 2 0 xff0c 1可用 xff0c 如果程序未

随机推荐

  • TI DSP的中断

    F28069的中断数是96个 xff0c 分为12组 The PIE block can support 96 individual interrupts that are grouped into blocks of eight Each
  • DSP的PWM

    PRD 周期寄存器 xff0c 决定了PWM的周期 频率 CMP 比较寄存器 xff0c 决定了PWM的占空比 CRT 计数寄存器 PWM原理图 为什么需要PWM
  • 出色的html滑动效果库 swiper -例子4 超长单栏横向滑动

    可以用于div滑动 xff0c 图片滑动等切换 例子代码以及所需资源 xff1a http download csdn net detail feisy 6638105 官网例子 xff1a 使用iframe来在同一个页面里面加入了很多各种
  • 【华人学者风采】张祥雨 旷视研究院

    华人学者风采 张祥雨 xff0c 旷视研究院基础模型负责人 研究领域主要为计算机视觉 曾与旷视首席科学家孙剑博士共同发明深度残差网络 ResNet 2020年发表论文 xff1a 22 发表论文 xff1a 58 论文引用数 xff1a 6
  • 出色的html滑动效果库 swiper -例子5 横向自由滑动 可以滑动部分

    可以用于div滑动 xff0c 图片滑动等切换 例子代码以及所需资源 xff1a http download csdn net detail feisy 6638105 官网例子 xff1a 使用iframe来在同一个页面里面加入了很多各种
  • 不要将两个指针变量指向同一块动态内存

    不要将两个指针变量指向同一块动态内存 这个容易引起很严重的问题 如果将两个指针变量指向同一块动态内存 xff0c 而其中一个生命期结束释放了该动态内存 xff0c 这个时候就会出现问题 xff0c 另一个指针所指向的地址虽然被释放了但该指针
  • CMAKE的一些编译选项

    set CMAKE BUILD TYPE 34 Release 34 if CMAKE BUILD TYPE STREQUAL 34 Debug 34 set CMAKE CXX FLAGS 34 CMAKE CXX FLAGS std 6
  • 查看当前系统的glibc版本

    from http my oschina net acmfly blog 77211 有时我们经常需要查看当前系统的glibc版本 xff0c 可以这样查看 xff1a lib libc so 6 有时 xff1a lib x86 64 l
  • 禁忌搜索算法简介

    忌搜索 xff08 Tabu Search或Taboo Search xff0c 简称TS xff09 的思想最早由Glover 1986 提出 xff0c 它是对局部领域搜索的一种扩展 xff0c 是一种全局逐步寻优算法 xff0c 是对
  • 自定义文件格式注册和图标设置

    我们很多时候可能会有这样的一种需求 xff0c 即要生成自己的文件格式 xff0c 然后将这种文件格式注册到操作系统中 xff0c 双击就会使用特定的程序来打开 xff0c 并且我们还想为这种文件格式设置一个图标和缩略 本文章解决的是注册文
  • apache源码分析v2.0

    一 概要 1 平台功能层 xff0c 可移植运行库层 xff0c 核心功能层 xff0c 可选功能层 xff0c 第三方支持库 2 核心功能层 xff1a mod core 处理配置文件中的大部分配置指令 mod so 动态加载其余模块 m
  • Intel英特尔历代经典 CPU 产品回顾

    悉数历史 英特尔历代经典 CPU 产品回顾 从英特尔于 1971 年推出首款 4004 微处理器到现在 xff0c 英特尔处理器已经走过 了 40 个年头 在告别 13 年传奇品牌奔腾之后 xff0c 我们又迎来新一代酷睿 i 双核处 理器
  • vTaskStartScheduler()分析笔记

    FreeRTOS是通过vTaskStartScheduler 函数来启动运行的 xff0c 通常被封装在osKernelStart 中 xff0c 它的工作内容如下 xff1a xTaskCreate 创建空闲任务 xff0c 其优先级为最
  • 在MES中遇到生产异常是怎么处理的

    MES系统在生产过程中 xff0c 难免会遇到各种异常情况 xff0c 如机器故障 材料不足 工人缺席等 xff0c 这些异常情况会影响生产进度和产品质量 那么 xff0c 在MES中遇到生产异常通常是怎么处理的呢 xff1f 1 实时监控
  • ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM

    摘要 ORB SLAM3是第一个能够让单目 立体相机和RGB D相机与针孔和鱼眼镜头模型解耦进行视觉 视觉 43 惯性和多地图SLAM的系统 第一个主要的创新是一个基于特征的紧密集成视觉 43 惯性SLAM系统 xff0c 它完全依赖于最大
  • SVN右键不显示

    安装重启试了很多中方法 xff0c SVN右键始终不显示 方法1 xff08 测试没有出现 xff09 xff08 一 xff09 开始 运行 输入 regedit 进入注册表 xff1b xff08 二 xff09 进入目录 xff1a
  • GPS定位频率最高是多少HZ?

    转载 xff1a https www zhihu com question 41257990 answer 90574977 现在普遍常见的芯片10Hz xff0c ublox好像可以配置到100Hz xff0c 具体是10还是100记不清
  • 总结下-ST2.0库的霍尔角度估计

    1 首先明确一个关系等式 xff0c 看软件就很容易理解 F1代表FOC执行频率 xff08 PWM周期频率 xff09 xff0c 单位是HZ xff1b A代表一个PWM周期内霍尔角度变化量 xff1b AC代表一个电角度周期的角度变化
  • matlab timeserise

    1 xff09 产生timeserise数据 方法一 xff1a 通过timeseries xff0c 例如ts 61 timeseries rand 5 1 rand是产生5 1的矩阵随机数 方法二 xff1a simulink中产生的数
  • 自适应滤波器

    1 LMS Filter模块仿真时 xff0c 输出会发散 xff0c 主要是mu值选取不合适 xff0c 选取比较小的值就可以了 2 可以把网上的m文件通过 matlab coder工具直接转为C文件 xff08 不能直接使用 xff0c