时间:2021-05-22
我们经常使用傅里叶变换来计算数字信号的频谱,进而分析数字信号,离散时间傅里叶变换的公式为:
可是自己动手实现一遍才是最好的学习。
在数字分析里面,傅里叶变换默认等时间间隔采样,不需要时间序列,只需要信号数组即可分析。
分析过程如下:
使用方法:
从以上过程得到数字序列的傅里叶变换之后,如果想要得到真正频谱,还需要做处理:
完整程序:
# 离散时间傅里叶变换的 python 实现import numpy as npimport mathimport pylab as plimport scipy.signal as signalimport matplotlib.pyplot as pltsampling_rate=1000t1=np.arange(0, 10.0, 1.0/sampling_rate)x1 =np.sin(15*np.pi*t1)# 傅里叶变换def fft1(xx):# t=np.arange(0, s) t=np.linspace(0, 1.0, len(xx)) f = np.arange(len(xx)/2+1, dtype=complex) for index in range(len(f)): f[index]=complex(np.sum(np.cos(2*np.pi*index*t)*xx), -np.sum(np.sin(2*np.pi*index*t)*xx)) return f# len(x1)xf=fft1(x1)/len(x1)freqs = np.linspace(0, sampling_rate/2, len(x1)/2+1)plt.figure(figsize=(16,4))plt.plot(freqs,2*np.abs(xf),'r--')plt.xlabel("Frequency(Hz)")plt.ylabel("Amplitude($m$)")plt.title("Amplitude-Frequency curve")plt.show()plt.figure(figsize=(16,4))plt.plot(freqs,2*np.abs(xf),'r--')plt.xlabel("Frequency(Hz)")plt.ylabel("Amplitude($m$)")plt.title("Amplitude-Frequency curve")plt.xlim(0,20)plt.show()此处实现的是传统的傅里叶变换,这种方法实际已经不用了,现在使用快速傅里叶变换,其实两种是等价的,但是快速傅里叶变换时间复杂度要小很多。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
离散余弦变换/Discretecosinetransform,根据离散傅里叶变换的性质,实偶函数的傅里叶变换只含实的余弦项,而数字图像都是实数矩阵,因此构造了一
使用Pythonnumpy模块带的FFT函数合成矩形波和方波,增加对离散傅里叶变换的理解。导入模块importnumpyasnpimportmatplotlib
最近工作需要,看了一下小波变换方面的东西,用python实现了一个简单的小波变换类,将来可以用在工作中。简单说几句原理,小波变换类似于傅里叶变换,都是把函数用一
DFTDFT(DiscreteFourierTransform),离散傅里叶变化,可以将离散信号变换到频域,它的公式非常简单:离散频率下标为k时的频率大小离散时
本文实例为大家分享了python傅里叶变换FFT绘制频谱图的具体代码,供大家参考,具体内容如下频谱图的横轴表示的是频率,纵轴表示的是振幅#coding=gbki