一阶低通滤波器

news2024/10/2 22:18:20

一阶低通滤波器

在这里插入图片描述
X为输入,Y为滤波后得到的输出值;本次的输出结果主要取决于上次的滤波输出值,其中a是和滤波效果有关的一个参数,称为滤波系数;它决定新采样值在本次滤波结果中所占的权重;
在这里插入图片描述

滤波系数a越小,滤波结果越平稳,但是灵敏度低;
滤波系数a越大,滤波结果越不稳定,但是灵敏度高;

在这里插入图片描述

从幅值函数中可以看出:
当输入信号的频率小于截止频率时,幅值基本等于1,也就是输入信号能基本还原出有用信号的状态;
当输入信号的频率大于截止频率时,幅值就迅速小于1了,也就达到了衰减高频干扰信号的目的;
从相角函数中可以看出:
随着输入信号的频率的不断增大,输入信号的相位不断滞后,
当输入信号的频率等于截止频率时,相位滞后45度,
当输入信号的频率远大于截止频率时,相位滞后90度。

带宽截止频率的设计

在这里插入图片描述

相移设计

在这里插入图片描述

采样周期的选取

在这里插入图片描述
例子
在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define PI 3.14159265358979323846
//input 当前输入信号
//prev_output 上一个输出信号
//prev_input 上一个输入信号
//cutoff_freq 截止频率
//sample_rate 采样频率
double filter(double input, double prev_output, double prev_input, double cutoff_freq, double sample_rate) {
    double RC = 1.0 / (2.0 * PI * cutoff_freq);
    double alpha = 1.0 / (1.0 + RC * sample_rate);
    double output = alpha * (input + prev_input) + (1 - alpha) * prev_output;
    return output;
}

int main() {
    double input_signal[] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0};
    double output_signal[10];
    double prev_output = 0.0;
    double prev_input = 0.0;
    double cutoff_freq = 10.0; // 11Hz
    double sample_rate = 10000.0; // 10 kHz
    int i;

    for (i = 0; i < 10; i++) {
        output_signal[i] = filter(input_signal[i], prev_output, prev_input, cutoff_freq, sample_rate);
        prev_output = output_signal[i];
        prev_input = input_signal[i];
    }

    for (i = 0; i < 10; i++) {
        printf("%f\n", output_signal[i]);
    }

    return 0;
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
例子二


#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define PI (3.141592f)

typedef struct
{
    float ts;       //采样周期(s)
    float fc;       //截至频率(hz)
    float lastYn;   //上一次滤波值
    float alpha;    //滤波系数
} low_pass_filter_t;

low_pass_filter_t low_pass_filter={0};  //定义滤波器

//初始化滤波系数
void Init_lowPass_alpha(low_pass_filter_t* const filter,const float ts, const float fc)
{
  float b=2*M_PI*fc*ts;
  filter->ts=ts;
  filter->fc=fc;
  filter->lastYn=0;
  filter->alpha=b/(b+1);
}
//低通滤波  给你data 你处理了返回一个数据
float Low_pass_filter(low_pass_filter_t* const filter, const float data)
{
  float tem=filter->lastYn+(filter->alpha*(data-filter->lastYn));
  filter->lastYn=tem;
  return tem;

}

int main()
{
    Init_lowPass_alpha(&low_pass_filter,10000,10);
    float input[10] = {1,2,3,4,5,6,8,9,10};
    float output[10] = {0};
    for(int i = 0;i<10;i++)
    {
        output[i] = Low_pass_filter(&low_pass_filter,input[i]);
        printf("%f\n",output[i]);
    }

}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1377952.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

12GoF之代理模式

解决问题的思维&#xff1a;AOP 解决问题技术&#xff1a;代理技术 代理技术太麻烦&#xff0c;因此使用框架 Spring AOP框架&#xff08;底层是代理技术&#xff1a;jdk动态daili&#xff0c;cglib&#xff09; 代理模式是GoF23种设计模式之一。属于结构型设计模式。 代理…

【BetterBench】2024年都有哪些数学建模竞赛和大数据竞赛?

2024年每个月有哪些竞赛&#xff1f; 2024年32个数学建模和数据挖掘竞赛重磅来袭&#xff01;&#xff01;&#xff01; 2024年数学建模和数学挖掘竞赛时间目录汇总 一月 &#xff08;1&#xff09;2024年第二届“华数杯”国际大学生数学建模竞赛 报名时间&#xff1a;即日起…

List列表操作中的坑

使用 Arrays.asList 把数据转换为 List 的三个坑 在如下代码中&#xff0c;我们初始化三个数字的 int[]数组&#xff0c;然后使用 Arrays.asList 把数组转换为 List&#xff1a; int[] arr {1, 2, 3}; List list Arrays.asList(arr); log.info("list:{} size:{} class…

Angular - 笔记

文章目录 语法属性绑定引用模板变量组件绑定父组件传子组件 input子组件传父组件 outputEventEmitter ViewChildViewChildren获取子组件对象列表 管道常用模块 函数localStorage实现数据持久化简介使用 参考文档 语法 属性绑定 Angular 的双向绑定语法是方括号和圆括号的组合 …

代码随想录算法训练DAY23|二叉树9

算法训练DAY23|二叉树9 669. 修剪二叉搜索树 力扣题目链接 给定一个二叉搜索树&#xff0c;同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树&#xff0c;使得所有节点的值在[L, R]中 (R>L) 。你可能需要改变树的根节点&#xff0c;所以结果应当返回修剪好的二叉搜索…

如何使用 Python、Node.js 和 Go 创建基于 YOLOv8 的对象检测 Web 服务

1. 介绍 这是有关 YOLOv8 系列文章的第二篇。在上一篇文章中我们介绍了YOLOv8以及如何使用它&#xff0c;然后展示了如何使用 Python 和基于 PyTorch 的官方 YOLOv8 库创建一个 Web 服务来检测图像上的对象。 在本文中&#xff0c;将展示如何在不需要PyTorch和官方API的情况下…

【Python进阶必备】一文掌握re库:实战正则表达式

目录 re库初识 re库基础使用方法 compile()函数 基本用法 正则表达式常用规则字符 match与search方法 match search match/search findall与finditer方法 使用findall()返回所有匹配项 使用findall()提取多个组的匹配 使用finditer()逐个返回Match对象 使用findi…

STM32---基本定时器(含源码)小白可入

写在前面&#xff1a;定时器是STM32中一个十分重要的外设&#xff0c;并且在STM32中具有多个定时器。定时器的包括基本定时器、通用定时器以及高级控制定时器&#xff0c;这些定时器相关独立&#xff0c;不共享任何资源。当然&#xff0c;其难易程度也是逐渐增加的&#xff0c;…

U盘启动安装win11遇到缺少计算机所需的介质驱动程序问题

一、使用U盘制作启动盘遇到问题 下载了windows原版镜像&#xff0c;验证了md5&#xff0c;确保文件没有损坏。使用ultroiso制作u盘启动盘&#xff0c;开始安装后出现下图的报错&#xff1a; 在网上搜索解决方案&#xff0c;主要有以下几种&#xff1a; 安装的时候&#xff0c…

2024年【电工(初级)】最新解析及电工(初级)模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 电工&#xff08;初级&#xff09;最新解析根据新电工&#xff08;初级&#xff09;考试大纲要求&#xff0c;安全生产模拟考试一点通将电工&#xff08;初级&#xff09;模拟考试试题进行汇编&#xff0c;组成一套电…

直接写一区! ZOA-PCNN-AT-SVM斑马优化并行卷积-支持向量机融合注意力机制的故障识别程序,特征可视化,实验多!图多!

适用平台&#xff1a;Matlab2023版本及以上 本原创程序提出的ZOA-PCNN-AT-SVM故障识别模型还没有人写&#xff01;在此基础上进一步对参考模型进行多重改进&#xff0c;程序注释清晰&#xff0c;干货满满&#xff0c;下面对文章和程序做简要介绍&#xff01; ①识别模型部分参…

【竞技宝】DOTA2:梦幻联赛开战在即 中国区前两名将晋级正赛

北京时间2024年1月12日&#xff0c;近期DOTA2刚刚结束了别墅杯东南亚/中国区的封闭预选赛&#xff0c;而别墅杯的正赛还要等到下个月才会正式开打&#xff0c;而即将在明天开始进行的是梦幻联赛S22的中国区预选赛&#xff0c;除官方直邀的XG战队直接晋级正赛之外&#xff0c;其…

C++力扣题目106,105--中序和后序,前序和中序遍历构造二叉树

106.从中序与后序遍历序列构造二叉树 力扣题目链接(opens new window) 根据一棵树的中序遍历与后序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如&#xff0c;给出 中序遍历 inorder [9,3,15,20,7]后序遍历 postorder [9,15,7,20,3] 返回如下的二叉树&am…

功能强大:JMeter 常用插件全解析

JMeter 作为一个开源的接口性能测试工具&#xff0c;其本身的小巧和灵活性给了测试人员很大的帮助&#xff0c;但其本身作为一个开源工具&#xff0c;相比于一些商业工具&#xff08;比如 LoadRunner&#xff09;&#xff0c;在功能的全面性上就稍显不足。这篇博客&#xff0c;…

ubuntu20.04网络问题以及解决方案

1.网络图标消失&#xff0c;wired消失&#xff0c;ens33消失 参考&#xff1a;https://blog.51cto.com/u_204222/2465609 https://blog.csdn.net/qq_42265170/article/details/123640669 原始是在虚拟机中切换网络连接方式&#xff08;桥接和NAT&#xff09;&#xff0c; 解决…

MySQL表结构转换为ES索引Mapping

背景 日常开发过程中肯定会存在MySQL表数据迁移至ES的情况&#xff0c;以canal为例&#xff0c;数据迁移时需要提前在ES中创建索引Mapping&#xff0c;但是如果碰到字段特别的表时&#xff0c;创建Mapping将是一件耗费心神的事情。为了解决这些重复工作&#xff0c;我使用Pyth…

mp-html 微信原生小程序渲染富文本

引入组件 "usingComponents": {"mp-html": "/components/mp-html/index"}使用 <mp-html content"{{info.course_info.info}}" />获取组件 介绍 mp-html&#xff0c;小程序富文本解析利器 全面支持html标签 小程序大多数都是…

Docker 方式安装 HertzBeat

一、安装docker docker安装参考https://www.runoob.com/docker/docker-tutorial.html curl -fsSL https://get.docker.com -o get-docker.shsudo sh get-docker.sh二、拉取docker镜像 https://hertzbeat.com/zh-cn/docs/start/docker-deploy部署HertzBeat您可能需要掌握的几条…

【c++】类和对象1

1.面向过程和面向对象初步认识 C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解决问题。 C是基于面向对象的&#xff0c;关注的是对象&#xff0c;将一件事情拆分成不同的对象&#xff0c;靠对象之间的交互完 成 …

第二节课 书生·浦语大模型趣味 Demo笔记及作业

文章目录 笔记作业基础作业&#xff1a;进阶作业&#xff1a; 笔记 书生浦语大模型InternLM-Chat-7B 智能对话 Demo&#xff1a;https://blog.csdn.net/m0_49289284/article/details/135412067书生浦语大模型Lagent 智能体工具调用 Demo&#xff1a;https://blog.csdn.net/m0_…