我是靠谱客的博主 明理帅哥,最近开发中收集的这篇文章主要介绍Python 信号处理——傅里叶变换Python 信号处理——傅里叶变化前言一、傅里叶变化原理和用途二、使用步骤总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Python 信号处理——傅里叶变化

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • Python 信号处理——傅里叶变化
  • 前言
  • 一、傅里叶变化原理和用途
  • 二、使用步骤
    • 1.主要代码
    • 2.示例Demo
  • 总结


前言

以前matab作为信号处理流形工具,里面丰富的信号处理函数那是真香。目前,python作为数据分析常用软件,其在信号处理方面的功能还有点欠缺。因此,博主将利用python逐步实现matlab中的信号处理函数。
下一个功能计划实现信号的包络分析。


一、傅里叶变化原理和用途

傅里叶变化主要是将信号从时域转换到频域,以获得信号的频谱特征。在使用过程中需要注意谱线数和信号截断影响,具体可以参考相应文献。程序中已考虑该两者影响。

二、使用步骤

1.主要代码

代码如下(示例):

import numpy as np

def FFT_demo(x,N,fs):
 	'''
    :param x: 输入信号
    :param N: 谱线数
    :param fs: 信号采样频率
    :return: 频谱值, 频率
    '''
    if N % 2 > 0:
        N -= 1
    if N > len(x):
        xs = np.append(x,np.zeros(N-len(x)))
    else:
        xs = x[:N]
    xf = np.fft.rfft(xs)/N
    freq = np.linspace(0,fs/2,int(N/2+1))
    xf = np.abs(xf)*2
    return xf, freq

2.示例Demo

代码如下(示例):

import numpy as np
import matplotlib.pyplot as plt

def FFT_demo(x,N,fs):
    if N % 2 > 0:
        N -= 1
    if N > len(x):
        xs = np.append(x,np.zeros(N-len(x)))
    else:
        xs = x[:N]
    xf = np.fft.rfft(xs)/N
    freq = np.linspace(0,fs/2,int(N/2+1))
    xf = np.abs(xf)*2
    return xf, freq
    
w = 5 # fre of rotational speed
z = 30 # gear teeth
fs = 1024 # vib signal sampling rate
fsw = 5 # rotational speed sampling rate
Time = 1 
f = w * z
t = np.linspace(0,Time-1/fs,int(Time*fs))
x = (1+1*np.sin(2*np.pi*20*t))*np.sin(2*np.pi*f*t)
Amplitude, fre = FFT1(x,1024,fs)
plt.subplot(2,1,1)
plt.plot(t,x)
plt.title('original')
plt.ylabel('Amplitude')
plt.subplot(2,1,2)
plt.plot(fre,Amplitude)
plt.title('Frequency')
plt.ylabel('Amplitude')
plt.show()

总结

欢迎各位交流,后续有啥想实现的信号处理功能,请在下方评论区留言,或者关注公众号(PS提现更新):不说话上代码在这里插入图片描述

最后

以上就是明理帅哥为你收集整理的Python 信号处理——傅里叶变换Python 信号处理——傅里叶变化前言一、傅里叶变化原理和用途二、使用步骤总结的全部内容,希望文章能够帮你解决Python 信号处理——傅里叶变换Python 信号处理——傅里叶变化前言一、傅里叶变化原理和用途二、使用步骤总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部