我是靠谱客的博主 明理帅哥,最近开发中收集的这篇文章主要介绍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 信号处理——傅里叶变化前言一、傅里叶变化原理和用途二、使用步骤总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复