赞
踩
fft计算信号频谱的原理
FFT(快速傅里叶变换)是一种将信号从时域转换到频域的方法,其基本原理是将信号分解为不同频率的正弦和余弦波的线性组合。通过计算这些正弦和余弦波的振幅和相位信息,可以得到原始信号在频域上的表示。FFT算法通过使用分治算法和对称性质等优化技巧,可以高效地计算出这些频率成分fft将信号从时域转换到频域时,计算频率和幅值以及相位的公式的振幅和相位信息,从而实现了快速的频谱分析。
fft将信号从时域转换到频域时,计算频率和幅值以及相位的公式
fft计算频率的原理
计算频率的过程就是从信号中提取出这些正弦和余弦波的频率成分(本身频率)
如果信号是cos(2*pi*2000t),按照上面的原理,如何计算这个信号的频谱显示呢
计算幅值:
在使用 FFT 算法计算离散信号的频谱时,通常会将得到的结果进行归一化。这是因为计算出来的幅值大小与采样点数N 有关,较大的 N 会导致计算得到的幅值变大,而较小的 N 会导致计算得到的幅值变小,从而影响不同采样点数下的幅值比较和分析。
通过对 FFT 的结果进行归一化,可以消除采样点数对幅值大小的影响。具体而言,对于长度为 N 的信号 x[n],其 FFT 变换结果为 X[k],则归一化后的结果可以表示为:
对一个载波频率fc = 2000的余弦信号做fft变化,观察单边谱和双边谱的不同
- import numpy as np # 导入numpy包
- import matplotlib.pyplot as plt # 导入matplotlib.pyplot
- import numpy.fft as fft
- from scipy.fftpack import fft
- from scipy.fftpack import fftfreq
- #设置基本参数并绘制载波信号
- fc = 2000
- fs = 4*fc
- t = np.arange(0, 0.01, 1 / fs) # 采样频率fs=1000÷10=100
- y = np.cos(2*np.pi*fc*t) # y=sin(2*π*f*t) # 这里f=2
- plt.plot(t, y) # 绘制图形
- plt.xlabel('t(s)')
- plt.ylabel('f(Hz)')
- plt.title('y=cos(2*π*fc*t)')
这个余弦信号不光滑,比较尖锐,这是因为采样频率为4*fc,分辨率比较低。提高采样率为40*fc
- #绘制双边频谱
- def myfft(signal,fs):
- fft_signal = fft(signal) #fft计算
- amp = abs(fft_signal)/len(signal) # 计算得到幅值:利用fft计算得来的幅值要进行归一化,xiao'cu
- fre = fftfreq(len(signal), 1 /fs) #生成频率坐标 fftfreq(信号长度,1/采样率)
- return amp,fre # 返回幅度和频率
'运行
- #绘制单边谱
- def myfft1(x,fs):
- fft_x = fft(x) # fft计算
- amp_x = abs(fft_x)/len(x)*2 # 纵坐标变换,len(x)是采样数
- label_x = np.linspace(0,int(len(x)/2)-1,int(len(x)/2)) # 生成频率坐标
- amp = amp_x[0:int(len(x)/2)] # 选取前半段计算结果即可
- # amp[0] = 0 # 可选择是否去除直流量信号
- #fs =1/( t[2]-t[1]) # 计算采样频率
- fre = label_x/len(x)*fs # 频率坐标变换
- #pha = np.unwrap(np.angle(fft_x)) # 计算相位角并去除2pi跃变
- return amp,fre # 返回幅度和频率
'运行
从双边谱中可见两点:
第一,频率存在负数,且其图像关于0Hz对称。在-2000Hz和2000Hz的地方存在很大的幅值
第二,频率是从-40000Hz到40000Hz(这个也是很重要的一点,fft得到的频率是采样频率的一半)
由单边谱可见:
对于一个单一频率的正弦波信号,其双边谱中该频率分量的幅值应该是信号振幅的一半。而单边谱中的幅值则应该是双边谱中该频率分量幅值的两倍。
对于一个单一频率的正弦波信号,其在f0处的频谱幅值应该是信号幅值的一半。
因此,对于一个单一频率的正弦波信号,在时域和频域中,其振幅大小都可以用相同的值来表示,即:
对于一个单一频率的正弦波信号,其双边谱中该频率分量的幅值应该是信号振幅的一半。而单边谱中的幅值则应该是双边谱中该频率分量幅值的两倍。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。