RC低通滤波器

article/2025/10/11 9:41:14

转自:RC低通滤波器 - 知乎

RC low pass filter,或者叫直流滤波器(DC Filter), 其作用是采用软件的方式,把一输入交流信号中的直流成分滤除掉。

其传递函数为:

其中K为加权因子,值域为 [0 ~ 1],值越小由收敛越快,但信号的强度也会被大打折扣。通常该取接近于1的值,经常值为0.999。

下图为一组测试实例,图中黑色曲线为4组不同频率及振幅的正弦波的叠加,绿色曲线为经过直流滤波后的效果,其因子K=0.999;可以看到原始数据中的直波成分逐渐被过滤掉了。

上图制作的python代码:

import numpy as np
import matplotlib.pyplot as plt
import ctypes
import os, sysos.chdir(os.path.abspath(os.path.dirname(sys.argv[0])))'''Begin: C function and parameters and return declaration
'''
cLibs = ctypes.CDLL("{0}\\cLib\\cLib.dll".format(os.getcwd()))
cLibs.DoLowPass_Filter.restype = ctypes.c_float  # declare return type;
cLibs.DoHighPass_Filter.restype = ctypes.c_float  # declare return type;
cLibs.DoDc_Filter.restype = ctypes.c_float  # declare return type;
cLibs.DoSquared_Filter.restype = ctypes.c_float'''
call init function.
'''
cLibs.InitDcFilter(ctypes.c_float(0.999))
cLibs.InitHighPass(ctypes.c_float(100),ctypes.c_float(16000))
cLibs.InitSquaredFilter(ctypes.c_float(0.99875))def sin_wave(a, f, fs, phi, t, dc=0):"""Generator sine wave sequence.若时间序列长度为 t=1s, 采样频率fs=1000Hz,则采样时间间隔 Ts=1/fs=0.001s;对于时间序列采样点个数为 n=t/Ts=1/0.001s=1000,即有1000个采样点,每个点的时间间隔为Ts.:param a: 振幅:param f: 信号频率:param fs: 采样频率:param phi: 相位:param t: 时间长度:param dc: 直流偏置:return: wave array."""ts = 1 / fsn = t / tsn = np.arange(n)y = dc + a * np.sin(2 * np.pi * f * n * ts + phi * (np.pi / 180))return y'''
dc 滤波器
'''def dc_filter(x_array, k=0.999):""":param x_array: 输入数据序列:param k: 滤波系数:return: 滤波后数据序列"""y = []x_prev = 0y_prev = 0for x_val in x_array:y_prev = x_val - x_prev + k * y_prevx_prev = x_valy.append(y_prev)return y'''
图形显示
'''
tspan = 0.5
Fs = 16000hz_10 = sin_wave(a=0.3, f=10, fs=Fs, phi=0, t=tspan, dc=4)
hz_30 = sin_wave(a=0.3, f=30, fs=Fs, phi=0, t=tspan, dc=3)
hz_50 = sin_wave(a=0.3, f=50, fs=Fs, phi=0, t=tspan, dc=2)
hz_250 = sin_wave(a=0.5, f=250, fs=Fs, phi=0, t=tspan, dc=1)hz_raw = np.array(hz_10) + np.array(hz_30) + np.array(hz_50) + np.array(hz_250)hz_dc = []
hz_iir = []
hz_squared = []
hz_rooted = []
for itm in hz_raw:flted = cLibs.DoDc_Filter(ctypes.c_float(itm))hz_dc.append(flted)flted = cLibs.DoHighPass_Filter(ctypes.c_float(flted))hz_iir.append(flted)flted = cLibs.DoSquared_Filter(ctypes.c_float(flted))hz_squared.append(flted)flted = np.sqrt(flted)hz_rooted.append(flted)x = np.arange(0, tspan, 1 / Fs)
plt.xlabel('t/s')
plt.ylabel('y')
plt.grid()
plt.plot(x, hz_raw, 'k')
plt.plot(x, hz_dc, linewidth=1, color='green')
plt.plot(x, hz_iir, 'r--')
plt.plot(x, hz_squared, 'b-.')
plt.plot(x, hz_rooted, 'red')
plt.legend(['raw', 'dc', 'iir', 'squared_exp_avg', 'squared_rooted'], loc=1, fontsize=26)
plt.show()

 


http://chatgpt.dhexx.cn/article/p8RbNa21.shtml

相关文章

RC滤波器

1、一阶RC低通滤波器 RC低通滤波器的电路及其幅频、相频特性如下图所示,输入电压为ex,输出电压为ey     其中ζRC,截止频率f1/2πRC。 2、一阶RC高通滤波器 其中ζRC,截止频率f1/2πRC。 3、二阶RC低通滤波器 二阶 RC 电路…

电子设计教程2:RC低通滤波器

吃火锅的时候,圆滚滚的鱼丸不好用筷子夹到,我会用漏勺把鱼丸捞出来,让火锅汤底漏出去,这个漏勺就相当于一个滤波器。 波器的分类 电子领域的滤波器,可以“过滤掉”我们不需要的某个频率的波形。按内部是否有电源和有…

【电路中的滤波器】1.一阶RC低通滤波器详解

前言 本文旨在从硬件电路特性、动态系统建模分析、系统传递函数多方面结合的角度来详细总结一阶低通滤波器。目的是从本质上多角度的去解析RC滤波器的原理,帮助自己通过RC低通走入模电频率部分这一“玄学”内容。这将是一个专题,后续将会继续更新各种滤…

RC滤波器(高通/低通)

RC既可以构成低通滤波电路,也可以构成高通滤波电路 1、高通滤波器 如果输入是个直流电压,ui电压的变化率为0,所以RL上没有电流通过,根据欧姆定律,即out0V,电容完全”隔直“,也就是说频率为0的信…

实时广播星历和精密星历下载

1.账号申请 https://www.auscors.ga.gov.au/registration/ 登入该网址,填写必要消息,最后邮箱会收到:1)usename; 2)password; 3)hostname; 4)port 2.打开rtklib软件中的STRSVR (若无rtklib,下载地址&…

RTK_LIB 源码、可执行文件、rtkget、观测文件、星历文件(精密星历、广播星历)、精密钟差文件介绍

1. RTK_LIB开源程序下载: 点开rtklib链接:下载最新版本的可执行文件和程序源码。 2. GNSS数据处理需要的文件 2.1 伪距定位:spp 观测数据(.0)导航星历(广播星历.n) 2.2 精密单点定位:ppp 观测数据精…

GNSS说第(三)讲---最新的GNSS观测数据及精密星历等产品的下载方式及地址

由于美国政府安全要求,不再允许CDDIS通过传统的未加密匿名ftp提供数据;该服务于2020年10月31日终止。所有数据仍然可用,但是必须通过HTTPS或ftp-ssl进行访问。 经过测试,直接访问该网站即可下载数据:GNSS下载。进入该网…

GPS从入门到放弃(十九)、精密星历(sp3格式)

在目前的GPS系统中,除了卫星播发的广播星历之外,IGS 组织(International GNSS Service)还提供精度更高的卫星星历,我们称之为精密星历。 精密星历可以用于更高精度的定位需求,达到厘米级。当然可能会有相应…

广播星历/精密星历、IGS/iGMAS、BDS/GPS/GLONASS/Galileo

广播星历和精密星历说明: IGS和iGMAS说明: BDS系统组成/GPS组成/GLONASS系统组成/Galileo系统组成:

分别用精密星历和广播星历计算卫星坐标 -- 对 GNSS 第一次编程的总结

2019/9/24 最近上GNSS 课,老师布置了编写读取广播星历和精密星历来计算卫星坐标的作业,这篇文章对其进行一个简单的总结。 星历下载:https://blog.csdn.net/Gou_Hailong/article/details/100809806 一、用到的知识点 1、旋转矩阵 百度百科…

GPS/BDS/Galileo/Glonass卫星导航系统RINEX/TLE星历下载教程

1)TLE星历下载 1)TLE星历下载 网址:http://celestrak.com/ 打开网址后,向下拉网页,找到“Current Data (TLE)”,如下图所示。 2. 单击“Current Data (TLE)”,进入卫星星历下载界面&#…

Linux下载GEO数据,最简单的IGS精密星历等数据下载方法PPT

国际GNSS服务(International GNSS Service,简称IGS)前身为国际GPS服务(International GPS Service),是由国际大地测量协会(IAG)组建的国际协作组织,其主要作用是及时提供GNSS数据和高精度的卫星星历和钟差,为大地测量学和地球动力学研究提供服…

广播星历及精密星历格式学习

文章目录 1.广播星历格式说明1.1 头文件1.2 数据部分 2.精密星历3.参考文献 1.广播星历格式说明 1.1 头文件 左边为信息,右侧为对应的标签(第60个字符) 第一行:记录了RINEX的版本号和观测类型 第二行:创建本数据文件…

Unity3D 广播星历与精密星历

通过广播星历文件计算过卫星的轨迹并与精密星历作比较,计算残差并绘图,具体效果参看下图。 // 全局变量 public static class SystemConstant {public static double omegae 7.2921151467e-5; //地球自转角速度public static double mu 3.986005e14…

精密星历介绍与使用

文章目录 精密星历精密星历下载精密星历格式简单解读 rtklib 精密星历应用插值处理Neville插值介绍 使用精密星历解算与广播星历的对比精密星历解算结果广播星历解算结果 精密星历 SP3精密星历格式,即The Extended Standard Product 3 Orbit Format. 精密星历下载…

北斗广播星历和精密星历的下载

下载广播星历的网址:https://cddis.nasa.gov/Data_and_Derived_Products/CDDIS_Archive_Access.html 该网址需要注册账号,登录该网址时最好关闭一些杀毒软件 2. 该网址中的brdc代表测站号 在下面这个地址中可以找到5种类型的广播星历 Earthdata Logi…

多系统精密星历下载与分析

概述 精密星历是由若干卫星跟踪站的观测数据,经事后处理算得的供卫星精密定位等使用的卫星轨道信息。 IGS精密星历采用sp3格式,其存储方式为ASCII文本文件,内容包括表头信息以及文件体,文件体中每隔15 min给出1个卫星的位置&…

2022年GPS广播星历精密星历如何下载

注意:!!网上现有很多教程的星历下载地址 ftp://cddis.gsfc.nasa.gov/已经访问不了了,最新的方法见下文,亲测有效~ 1、星历下载网址(需要注册一下)Earthdata Loginhttps://cddis.nasa.gov/archiv…

GPS广播星历和精密星历的下载

1.广播星历 1.1 广播星历下载路径 原路径:ftp://cddis.gsfc.nasa.gov/ 已经无法使用 新的下载路径如下:https://cddis.nasa.gov/archive/gnss/data/daily/2022/brdc/ 路径中的年份是2022年,可以根据需要进行设置不同年份。往下翻&#xff0…

Shader(GLSL)

GLSL语言编写,主要两类Vertex shader,Fragement shader Shader构造: 预处理 变量定义 通过输入参数和函数算法,计算输出结果(main函数) 预处理: 预处理的运算在编译时执行 只有一个#行的一行…