频域特征提取的Python实现(频谱、功率谱、倒频谱)

本文只对 频域特征值提取的MATLAB代码实现(频谱、功率谱、倒频谱) 做代码翻译,用python重写一遍,以加强对这些特征的理解

1. 频谱

from scipy.fftpack import fft, fftshift, ifft
from scipy.fftpack import fftfreq
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inlinet_s = 0.01
t_start = 0.5
t_end = 5
t = np.arange(t_start, t_end, t_s)f0 = 5
f1 = 20# generate the orignal signal
y = 1.5*np.sin(2*np.pi*f0*t) + 3*np.sin(2*np.pi*20*t) + np.random.randn(t.size)# fft
Y = fft(y)# fftshift
shift_Y = fftshift(Y)# the positive part of fft, get from fft
pos_Y_from_fft = Y[:Y.size//2]# the positive part of fft, get from shift fft
pos_Y_from_shift = shift_Y[shift_Y.size//2:]# plot the figures
plt.figure(figsize=(10, 12))plt.subplot(511)
plt.plot(y)plt.subplot(512)
plt.plot(np.abs(Y))plt.subplot(513)
plt.plot(np.abs(shift_Y))plt.subplot(514)
plt.plot(np.abs(pos_Y_from_fft))plt.subplot(515)
plt.plot(np.abs(pos_Y_from_shift))
plt.show()

2. 功率谱

fs = 1000
num_fft = 1024;# generate original signal
t = np.arange(0, 1, 1/fs)
f0 = 100
f1 = 200
x = np.cos(2*np.pi*f0*t) + 3*np.cos(2*np.pi*f1*t) + np.random.randn(t.size)# FFT
Y = fft(x, num_fft)
Y = np.abs(Y)# power spectrum
ps = Y**2 / num_fft# power spectrum using correlate
cor_x = np.correlate(x, x, 'same')
cor_X = fft(cor_x, num_fft)
ps_cor = np.abs(cor_X)
ps_cor = ps_cor / np.max(ps_cor)plt.figure(figsize=(15, 12))
plt.subplot(511)
plt.plot(x)plt.subplot(512)
plt.plot(20*np.log10(Y[:num_fft//2]))plt.subplot(513)
plt.plot(20*np.log10(ps[:num_fft//2]))plt.subplot(514)
plt.plot(20*np.log10(ps_cor[:num_fft//2]))plt.show()

3. 倒频谱

fs = 1000
num_fft = 1024
t = np.arange(0, 5, 1/fs)
y1 = 10*np.cos(2*np.pi*5*t) + 7*np.cos(2*np.pi*10*t) + 5*np.cos(2*np.pi*20*t) + np.random.randn(t.size)
y2 = 20*np.cos(2*np.pi*50*t) + 15*np.cos(2*np.pi*100*t) + 25*np.cos(2*np.pi*200*t) + np.random.randn(t.size)
y = y1*y2Y1 = fft(y1, num_fft)
Y1 = np.abs(Y1)Y2 = fft(y2, num_fft)
Y2 = np.abs(Y2)Y = fft(y, num_fft)
Y = np.abs(Y)spectrum = np.fft.fft(y, n=num_fft)
ceps = np.fft.ifft(np.log(np.abs(spectrum))).realplt.figure(figsize=(20, 12))
plt.subplot(331)
plt.plot(y1)plt.subplot(332)
plt.plot(y2)plt.subplot(333)
plt.plot(y)plt.subplot(334)
plt.plot(Y1[:num_fft//2])plt.subplot(335)
plt.plot(Y2[:num_fft//2])plt.subplot(336)
plt.plot(Y[:num_fft//2])plt.show()

plt.figure(figsize=(10, 5))
plt.plot(np.abs(ceps)[:num_fft//2])
plt.ylim([0, 0.2])
plt.show()

频域特征提取的Python实现(频谱、功率谱、倒频谱)相关推荐

  1. 倒频谱原理与python实现

    目录 倒频谱定义 倒频谱python案例 本教程为脑机学习者Rose发表于公众号:脑机接口社区 .QQ交流群:903290195 倒频谱定义 倒频谱可以分析复杂频谱图上的周期结构,分离和提取在密集调频 ...

  2. 频谱、功率谱、倒频谱

    一.频谱: 时间作为参照来观察动态世界的方法我们称其为时域分析,如果另一种方法来观察世界的话,你会发现世界是永恒不变的,这个 静止的世界叫做频域(讲的很好!) 最直接的是求它的傅里叶变换 可参考: [ ...

  3. Python在振动信号处理中的应用(十一):倒频谱(Cepstrum)计算

    文章目录 一.概述 二.算法原理 2.1 实倒谱 2.2 复倒谱 3 算法在python中实现 四.TIPS 一.概述   倒频谱(Cepstrum)也叫倒谱.二次谱和对数功率谱等.倒频谱的工程型定义 ...

  4. 信号频域分析方法的理解(频谱、能量谱、功率谱、倒频谱、小波分析)

    信号的频域分析方法多种多样,这里针对较为常见的(频谱.能量谱.功率谱.倒频谱.小波分析)集中进行说明.这些方法的MATLAB代码实现参见文章频域特征值提取的MATLAB代码实现(频谱.功率谱.倒频谱) ...

  5. 频域分析方法的理解(信号、频谱、能量谱、功率谱、倒频谱、小波分析)(终极教程)

    信号频域分析方法的理解(频谱.能量谱.功率谱.倒频谱.小波分析) 参考文献,值得一读 https://blog.csdn.net/fengzhuqiaoqiu/article/details/1011 ...

  6. 时序信号的时域、频域、时-频域特征提取

    文章目录 时域特征提取 频域特征提取 时-频域特征提取 参考资料 在面对工业中的传感器采集到的高维的信号,如振动信号,通常需要对数据进行统计特征提取,以进行降维.对于这类时序信号,常用的有时域.频域和 ...

  7. 信号频域特征提取 Matlab

    经过我的大量搜索,简单总结了一下对于时序信号频域特征提取的手段. 首先是对于时域信号进行快速傅里叶变换,使其能够生成频域信号. 频域信号相对于时域信号来说,信号变化更加明晰,便于分析观察. 计算频域特 ...

  8. 功率谱和频谱的区别、联系

    生活中很多东西之间都依靠信号的传播,信号的传播都是看不见的,但是它以波的形式存在着, 这类信号会产生功率,单位频带的信号功率就被称之为功率谱.它可以显示在一定的区域中信号功率随着频率变化的分布情况. ...

  9. 学习通信原理之——从实验中理解频谱/功率谱/功率谱密度(MATLAB演示)

    我的个人博客文章链接如下:学习通信原理之--从实验中理解频谱/功率谱/功率谱密度(MATLAB演示) 前言 最近在复习通信原理,每次到了功率谱这一块就感到困惑,每次都要去查,我觉得不能再这样循环下去了 ...

最新文章

  1. c语言gets多组测试,C语言如何实现输入多组数据测试
  2. MTK平台的启动流程(secureboot)
  3. tensorflow gpu利用率为0_训练效率低?GPU利用率上不去?快来看看别人家的tricks吧...
  4. 手机常用分页加载loading框
  5. MATrICP论文解读
  6. oracle表连接——处理连接过程中另外一张表没有相关数据不显示问题
  7. 最新手机号码归属地数据库(2017年4月1日)
  8. Visual Studio介绍及安装
  9. 微信公众账号开发模式3
  10. C语言编程练习 7.13个人围成一圈,从第1个人开始顺序报号1、2、3,凡报到3的人退出圈子。
  11. Macromedia FlashPaper
  12. 关于B树的思考:m阶B树的非根非叶节点为什么要至少为ceil(m/2)个孩子? c/c++描述
  13. 推荐一些亲测实用的小软件
  14. php更改后缀名,修改网页后缀名
  15. 环评师c语言题目,C语言考试——编程题_文库吧
  16. LANL Earthquake Prediction收获
  17. BEVFusion(北大阿里)环境搭建教程
  18. linux安装压力测试工具vegeta
  19. ZigBee FAQ
  20. cfa-esg网课资源、教材资源、习题资源

热门文章

  1. FL Studio音频混音教程
  2. 彩色图像分解出三原色分量
  3. Android MultiDex实践:如何绕过那些坑?
  4. C语言所有头文件整理
  5. linux下挂载硬盘!
  6. git stash、git branch使用方法
  7. 1N5408-ASEMI整流二极管1N5408
  8. 英国哪些大学本科可以用ib English hl 成绩代替雅思成绩?
  9. web播放FTP地址视频
  10. HOG 特征的提取--基于scikit-image