Python 低通滤波器

2023-05-16

Python低通滤波器

读取ExcelProc目录下的out.txt文件中的波形数据,然后绘制出原始数据波形,最后再通过低通滤波器进行一次滤波

# -*- coding: utf-8 -*-


from scipy import signal
import numpy as np
import matplotlib.pyplot as pl
import matplotlib
import math

N = 0#500
fs = 5
n = []#[2*math.pi*fs*t/N for t in range(N)]
n1 = [2*math.pi*fs*t/N for t in range(N)]
fileObj = open("ExcelProc\out.txt",'r')
for line in fileObj.readlines():    #依次读取每行
    FuelVol = line#.split() #根据空格提取每个内容
    FuelVol = int(FuelVol) 
    n.append(FuelVol)<span style="white-space:pre">	</span>#将波形数据值依次添加到序列n中
    N += 1
    
while N%12 != 0:
    n.append(int(0))
    N += 1
print("N is deal ",N)
axis_x = np.linspace(0,1,num=N)
#设置字体文件,否则不能显示中文
#myfont = matplotlib.font_manager.FontProperties(fname='c:\\windows\\fonts\\fzshjw_0.ttf')

#频率为5Hz的正弦信号
#x = [math.sin(i) for i in n]
x = n
pl.subplot(221)
pl.plot(axis_x,x)
pl.title(u'5Hz Sin')
pl.axis('tight')


b,a = signal.butter(3,0.15,'low')
sf = signal.filtfilt(b,a,x)

pl.subplot(222)
pl.plot(axis_x,sf)
pl.title(u'Low Pass')
pl.axis('tight')
fileout = open("Out.txt","w")
fileout.write("const unsigned int datas[]={")
line = 0
for i in sf:
    i = int(i)
    if(line%36 == 0):
        fileout.write("\n")
    fileout.write(str(i)+",")
    line += 1
fileout.write("};")
fileout.close()
pl.show()

以下是改进型

# -*- coding: utf-8 -*-


from scipy import signal
import numpy as np
import matplotlib.pyplot as pl
import matplotlib
import math

N = 0#500
fs = 5
n = []#[2*math.pi*fs*t/N for t in range(N)]
n1 = [2*math.pi*fs*t/N for t in range(N)]
fileObj = open("ExcelProc\out.txt",'r')
for line in fileObj.readlines():    #依次读取每行
    FuelVol = line#.split() #根据空格提取每个内容
    FuelVol = int(FuelVol)
    n.append(FuelVol)
    N += 1
    
while N%12 != 0:
    n.append(int(0))
    N += 1
print("N is deal ",N)
axis_x = np.linspace(0,1,num=N)
#设置字体文件,否则不能显示中文
#myfont = matplotlib.font_manager.FontProperties(fname='c:\\windows\\fonts\\fzshjw_0.ttf')

#频率为5Hz的正弦信号
#x = [math.sin(i) for i in n]
x = n
pl.subplot(231)
pl.plot(axis_x,x)
pl.title(u'5Hz Sin')
pl.axis('tight')

x1 = []
length = (len(x)*5/7)
x1 = x[-length:]

pl.subplot(232)
axis_x1 = np.linspace(0,1,num=len(x1))
pl.plot(axis_x1,x1)
pl.title(u'ps')
pl.axis('tight')

x2 = x[:len(x)-length]
pl.subplot(233)
axis_x1 = np.linspace(0,1,num=len(x2))
pl.plot(axis_x1,x2)
pl.title(u'pd')
pl.axis('tight')


b,a = signal.butter(3,0.13,'low')
sf = signal.filtfilt(b,a,x1)

pl.subplot(234)
axis_x1 = np.linspace(0,1,num=len(x1))
pl.plot(axis_x1,sf)
pl.title(u'Low Pass')
pl.axis('tight')
fileout = open("Out.txt","w")
fileout.write("const unsigned int data[]@0xC000={")
line = 0
outx = []
outx = x2
for i in sf:
    outx.append(i)
    
pl.subplot(235)
axis_x1 = np.linspace(0,1,num=len(outx))
pl.plot(axis_x1,outx)
pl.title(u'Low Pass')
pl.axis('tight')

sampling_rate = 8000
fft_size = len(outx)
xf = np.fft.rfft(outx)/fft_size
freqs = np.linspace(0, sampling_rate/2, fft_size/2+1)
xfp = 20*np.log10(np.clip(np.abs(xf), 1e-20, 1e100))
pl.subplot(236)
pl.plot(freqs, xfp)
pl.xlabel(u"Freq(Hz)")
pl.subplots_adjust(hspace=0.4)

for i in outx:
    i = int(i)
    if(line%36 == 0):
        fileout.write("\n")
    fileout.write(str(i)+",")
    line += 1
fileout.write("};")
fileout.close()
pl.show()


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

Python 低通滤波器 的相关文章

  • Scrapy 在抓取一长串 url 时陷入困境

    我正在抓取一个大的 url 列表 1000 左右 并且在设定的时间后 爬虫程序会以 0 页 分钟的速度爬行 爬行时问题总是出现在同一个位置 url 列表是从 MySQL 数据库检索的 我对 python 和 scrapy 相当陌生 所以我不
  • “扩展”numpy ndarray 的好方法?

    有没有 扩展 numpy ndarray 的好方法 假设我有一个像这样的 ndarray 1 2 3 4 我希望每行通过填充零来包含更多元素 1 2 0 0 0 3 4 0 0 0 我知道一定有一些蛮力的方法可以做到这一点 比如构造一个带有
  • 使用多个具有不同日志级别的处理程序时出现意外的 python 记录器输出

    我正在尝试将数据记录到 stderr 并记录到文件中 该文件应包含all日志消息 并且 stderr 应该只转到命令行上配置的日志级别 这在日志记录指南中多次描述 但它似乎对我不起作用 我创建了一个小测试脚本来说明我的问题 usr bin
  • 如何在 Python 中使用 .format() 打印“for”循环中的列表?

    我是 Python 新手 我正在编写一段非常简单的代码 使用 for 循环打印列表的内容 format 我想要如下的输出 但我收到此错误 names David Peter Michael John Bob for i in names p
  • 在 MacOSX10.6 上运行 python 服务器时 MySQLdb 错误

    运行我的服务器 python manage py runserver 产生以下错误 django core exceptions ImproperlyConfigured 加载 MySQLdb 模块时出错 没有名为 MySQLdb 的模块
  • AttributeError:模块“tensorflow.python.framework.ops”没有属性“RegisterShape”

    我正在使用 TensorFlow 2 1 0 dev20191125 不幸的是 我无法编译一个带有错误的简单示例 AttributeError 模块 tensorflow python framework ops 没有 属性 Registe
  • 使用解析将 ** 运算符更改为幂函数?

    我的要求是将 运算符更改为幂函数 例如 1 Input B 2 Output power B 2 2 B 2 T 2 X Output power B 2 我写了下面的正则表达式来解决这个问题 rx r a zA Z0 9 a zA Z0
  • python 类的属性不在 __init__ 中

    我想知道为什么下面的代码有效 usr bin env python3 import sys class Car def init self pass if name main c Car c speed 3 c time 5 print c
  • 计算 for 循环期间的运行总计 - Python

    编辑 下面是我根据收到的反馈 答案编写的工作代码 这个问题源于我之前使用 MIT 的开放课件学习 Python CS 时提出的问题 在这里查看我之前的问题 https stackoverflow com questions 4990159
  • Python3如何安装.ttf字体文件?

    我想使用 python3 更精确的 Python 3 6 代码在 Windows 10 上安装 ttf 字体文件 我用谷歌搜索 但我发现的唯一的就是这个使用python在windows上安装TTF字体 https stackoverflow
  • 使用 Twisted Python 的 UDP 客户端和服务器

    我想创建一个服务器和客户端 使用 Twisted 从网络发送和接收 UDP 数据包 我已经用 Python 中的套接字编写了此代码 但想利用 Twisted 的回调和线程功能 然而 我需要 Twisted 设计方面的帮助 我想接收多种类型的
  • 如何对嵌套函数进行单元测试? [复制]

    这个问题在这里已经有答案了 您将如何对嵌套函数进行单元测试f1 在下面的例子中 def f def f1 return 1 return 2 或者需要测试的函数不应该嵌套吗 有一个类似的问题这个链接 https stackoverflow
  • 将多个 isinstance 检查转换为结构模式匹配

    我想转换此现有代码以使用模式匹配 if isinstance x int pass elif isinstance x str x int x elif isinstance x float Decimal x round x else r
  • Mac 上的 Errno 13 权限被拒绝

    我只是测试如何从一个 py 文件调用外部 py 文件 我有 2 个 py 文件 都在同一目录中 这是主要代码 runext py 假设调用 ext py import subprocess subprocess call Users tra
  • Celery 设计帮助:如何防止并发执行任务

    我对 Celery AMQP 相当陌生 正在尝试提出一个任务 队列 工作人员设计来满足以下要求 我有多种类型的 每用户 任务 例如 TaskA TaskB TaskC 这些 每用户 任务中的每一个都为系统中的一个特定用户读取 写入数据 因此
  • Python:如何使用生成器来避免 sql 内存问题

    我有以下方法来访问 mysql 数据库 并且查询在服务器中执行 我无权更改有关增加内存的任何内容 我对生成器很陌生 并开始阅读更多有关它的内容 并认为我可以将其转换为使用生成器 def getUNames self globalUserQu
  • Python写入dbf数据时出错

    我得到这个错误 DbfError unable to modify fields individually except in with or Process 如何修复它 这是我的code with dbf Table aa dbf as
  • 有效积累稀疏 scipy 矩阵的集合

    我有一个 O N NxN 的集合scipy sparse csr matrix 每个稀疏矩阵都有 N 个元素集 我想将所有这些矩阵加在一起以获得一个常规的 NxN numpy 数组 N 约为 1000 矩阵内非零元素的排列使得所得总和肯定不
  • 从 xgb.train() 获取概率

    我是 Python 和机器学习的新手 我在网上搜索了我的问题 并尝试了人们建议的解决方案 但仍然没有得到它 如果有人能帮助我 我将非常感激 我正在开发我的第一个 XGboost 模型 我已经使用 xgb XGBClassifier 调整了参
  • Pymongo 批量插入

    我正在尝试批量插入文档 但批量插入时不会插入超过 84 个文档 给我这个错误 in insert pymongo errors InvalidOperation cannot do an empty bulk insert 是否可以批量插入

随机推荐