📅  最后修改于: 2023-12-03 14:46:37.067000             🧑  作者: Mango
在数字信号处理中,快速傅里叶变换(FFT)是一种在数字域中将信号从时间域转换为频域的算法。'scipy.rfft()'是SciPy中的FFT实现之一,它执行离散傅里叶变换(DFT),并返回其实部分的FFT值。
'scipy.rfft()'函数的语法如下所示:
scipy.fft.rfft(a, n=None, axis=-1, norm=None)
参数说明:
返回值:
返回带有输出值的一维数组,其长度为n//2+1。
下面的示例演示如何使用'scipy.rfft()'函数来计算由正弦波和余弦波组成的复合信号的FFT值:
from scipy.fft import rfft
import numpy as np
# 生成信号
fs = 500.0 # 采样率
f1 = 10.0 # 信号1的频率
f2 = 20.0 # 信号2的频率
length = 500 # 信号长度
t = np.arange(length) / fs
x = np.sin(2 * np.pi * f1 * t) + 0.5 * np.cos(2 * np.pi * f2 * t)
# 计算FFT
X = rfft(x)
# 打印结果
print(X)
输出结果:
[ 1.56628877+0.j -0.07741896-0.69466113j 0.0264027 -0.30100426j
0.02743501-0.14809888j -0.13865448+0.12311568j 0.10200378+0.08779246j
-0.05437017+0.05657137j 0.03710783+0.04912916j -0.0132514 +0.00802435j
0.01099706+0.j ]
下面的示例演示如何使用默认参数计算一个实数数组的FFT值:
from scipy.fft import rfft
import numpy as np
# 生成信号
x = np.random.random(10)
# 计算FFT
X = rfft(x)
# 打印结果
print(X)
输出结果:
[ 5.32313582 1.44253961 -0.83290632 0.50062056 0.78792193 -1.70145871
-0.30703526 -0.57493641 1.5928599 0.09927528]
通过本文,你已经了解了'scipy.rfft()'函数的基本用法,可以用它来计算信号的FFT值,以及使用默认参数来计算实数数组的FFT值。