1.txt是生物信号的原始信号,2.txt是滤波之后保存的信号

原始信号的片段:

。。。。。。。。。。。。。。。。。。。。。。。

代码:

import matplotlib.pyplot as plt
import numpy as np
import numpy.fft as nf
#傅里叶频率滤波
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示符号
# 读取脉搏信号
#读取信号数据
def readtxt(path):with open(path,'r') as f:str=f.readline()list = str.split(' ')list1=[];for i,x in enumerate(list):if ((i%5 == 0) or (i%5 == 1) or (i%5 == 2)) and x !='':list1.append(float(x))return list1
#采样频率是500hz
sample_rate=500
#采样长度
noised_sigs=readtxt('1.txt')
times = np.arange(len(noised_sigs)) / sample_rateplt.figure('Filter')
plt.subplot(221)
plt.title('Time Domain', fontsize=16)
plt.ylabel('Signal', fontsize=12)
plt.tick_params(labelsize=10)
plt.grid(linestyle=':')
plt.plot(times[20000:], noised_sigs[20000:], c='orangered', label='脉搏')
plt.legend()
# plt.show()
#基于傅里叶变换,获取频域信息,绘制音频频域的:频率/能量图像
# 傅里叶变换后,绘制频域图像
freqs = nf.fftfreq(times.size, times[20001] - times[20000])
complex_array = nf.fft(noised_sigs)
pows = np.abs(complex_array)plt.subplot(222)
plt.title('Frequency Domain', fontsize=16)
plt.ylabel('Power', fontsize=12)
plt.tick_params(labelsize=10)
plt.grid(linestyle=':')
# 指数增长坐标画图
plt.semilogy(freqs[freqs > 0], pows[freqs > 0], c='limegreen', label='Noised')
plt.legend()
# plt.show()#将低频噪声去除后绘制信号频域的:频率/能量图像
# where函数寻找那些需要抹掉的复数的索引(获取小于0.5的信号)
noised_indices = np.argwhere(freqs < 0.5)
# 复制一个复数数组的副本,避免污染原始数据
filter_complex_array = complex_array.copy()
filter_complex_array[noised_indices] = 0
filter_pows = np.abs(filter_complex_array)plt.subplot(223)
plt.xlabel('Frequency', fontsize=12)
plt.ylabel('Power', fontsize=12)
plt.tick_params(labelsize=10)
plt.grid(linestyle=':')
plt.plot(freqs[freqs >= 0.2], filter_pows[freqs >= 0.2], c='dodgerblue', label='Filter')
plt.legend()
# plt.show()
#基于逆向傅里叶变换,生成新的信号,绘制时域的:时间/位移图像
filter_sigs = nf.ifft(filter_complex_array).real
plt.subplot(224)
plt.xlabel('Time', fontsize=12)
plt.ylabel('Signal', fontsize=12)
plt.tick_params(labelsize=10)
plt.grid(linestyle=':')
plt.plot(times[40000:], filter_sigs[40000:], c='hotpink', label='Filter')
plt.legend()
plt.show()
#写入保存文件
with open('2.txt', 'w') as f:str = ' '.join(str(i) for i in filter_sigs)f.write(str)

效果展示:

经过滤波我们获取到频率小于0.5的所有信号,左后写入到2.txt的文件内,上图1是原始信号,4是滤波之后的信号。

傅里叶变换滤波之生物信号滤波(笔记03)相关推荐

  1. 随机信号分析笔记03:全概率公式和贝叶斯公式

    1. 完备事件组 事件B1,B2,...,Bn两两互斥且在试验中至少发生一个 B1.B2.....Bn的交集为空集(不可能事件),并集为全集(必然事件). 2. 全概率公式 任意事件A, 将一个复杂的 ...

  2. 超入门级-基于中值滤波处理ECG信号的基线漂移-Python-MIT-BIH数据集

    中值滤波处理心电信号的基线漂移 距离上次发东西已经8个月,我已经本科毕业成为了一名研究生,但是我已经暂时弃硬从软,暂时开始做深度学习方向了,这篇文章就算一个我研究生学习的第一次笔记分享,我也会争取写的 ...

  3. python信号滤波_PPG信号滤波过后的时频分析

    PPG信号的 时域图.频域图.时频图.小波变换图 import os import time import traceback import pandas as pd import plotly.pl ...

  4. matlab 信号 滤波,大仙带你学matlab信号处理和滤波去噪

    本套课程适合对象 1 想入门matlab信号处理的初学者: 2 想深入通过信号处理案例来实战的中级学者: 本套课程特色 1  2018年最新录制高清加完整演示代码: 2  课程精炼,精讲+更多时间留给 ...

  5. OpenCV学习笔记(二十一)——绘图函数core OpenCV学习笔记(二十二)——粒子滤波跟踪方法 OpenCV学习笔记(二十三)——OpenCV的GUI之凤凰涅槃Qt OpenCV学习笔记(二十

    OpenCV学习笔记(二十一)--绘图函数core 在图像中,我们经常想要在图像中做一些标识记号,这就需要绘图函数.OpenCV虽然没有太优秀的GUI,但在绘图方面还是做得很完整的.这里就介绍一下相关 ...

  6. python butter带通滤波器滤波出来的信号有NAN值或者分类效果极差

    在使用scipy.signal.butter带通滤波器对信号滤波后,信号值全变为NAN,或者就算信号没有变为NAN,送入分类器的分类效果也极差 解决方法: 带通滤波器的阶数设置得太高了,需要设低一些

  7. matlab双线性变换切比雪夫2,语音信号滤波去噪——使用双线性变换法设计切比雪夫II型.doc...

    语音信号滤波去噪--使用双线性变换法设计切比雪夫II型.doc 语音信号滤波去噪--使用双线性变换法设计切比雪夫II型滤波器 学生姓名:李谷越 指导老师:胡双红 摘 要 本课程设计的主要目的石设计一个 ...

  8. 长时间数据流的信号滤波处理——基于MATLAB的FIR滤波器设计(1)

    背景 对于任意一个场景,获取到的信号都是经过噪声污染过的,一些简单的加性噪声可以通过统计的特性进行滤除,而对于一些乘性的噪声,只能通过滤波进行滤除. 在信号处理中,信号滤波会广泛使用.在做研究分析信号 ...

  9. 基于matlab的语音信号滤波处理

    基于matlab的语音信号滤波处理 摘要:本课程设计的主要目的是在MATLAB环境下,使用窗口设计法设计一个滤波器,并对语音信号进行滤波去噪.开发平台为MATLAB,设计方法为窗口设计法.用麦克风采集 ...

最新文章

  1. 统计学原理----描述性统计
  2. [20161229]linux下使用oclumon命令(rac)
  3. raid5坏了一块盘怎么办_服务器阵列信息丢失,数据怎么办?先不要慌,也许很快就能恢复...
  4. powerdesigner自动生成代码的修改
  5. oracle里返回值吗,Oracle有返回值的存储过程 | 学步园
  6. 微软发文庆祝 .NET 诞生 20 周年纪念日!
  7. Spring使用ajax异步上传文件
  8. Echarts数据可视化tooltip提示框,开发全解+完美注释
  9. pip离线下载安装依赖包,及github包,及常用pip源
  10. python3.7下载 numpy
  11. MySQL安装及应用合集(4):MySQL库表基本操作-增删改查
  12. Pandas处理和转置excel数据
  13. 陕西国防学院计算机系网络教研室,陕西国防工业职业技术学院:全卫强副院长赴各院部调研教师发展工作...
  14. 2021年立秋是什么时候?立秋的习俗有哪些?
  15. Python串口异步通信
  16. android 清理后自动重启,解决Android后台清理APP后,程序自动重启的问题
  17. Web_制作页面开场动画并解决自动播放问题
  18. 新型超级电容/法拉电容介绍
  19. 大唐之路(4)一号店入驻要求
  20. 【SV中local::的用法】

热门文章

  1. [UVALive 3661] Animal Run
  2. JAVA正确地自定义比较对象---如何重写equals方法和hashCode方法
  3. BSD socket编程学习
  4. Nagios 监控系统架构
  5. 资源位图android4.2中为什么要高效的处理位图资源
  6. 请写出至少五个块级元素_Java 面试题(五)
  7. 耶鲁 计算机科学,耶鲁大学计算机科学专业排名第20(2020年USNEWS美国排名)
  8. 华为畅享20不能升级鸿蒙,华为mate20可以升级鸿蒙os吗-mate20能不能更新鸿蒙系统...
  9. netty sync方法_netty是如何封装NIO的
  10. 今夕何夕影迷小伙伴,喜欢的壁纸都在高图网