📜  Python中的 scipy.rfft()(1)

📅  最后修改于: 2023-12-03 14:46:37.067000             🧑  作者: Mango

Python中的 scipy.rfft()

在数字信号处理中,快速傅里叶变换(FFT)是一种在数字域中将信号从时间域转换为频域的算法。'scipy.rfft()'是SciPy中的FFT实现之一,它执行离散傅里叶变换(DFT),并返回其实部分的FFT值。

用法

'scipy.rfft()'函数的语法如下所示:

scipy.fft.rfft(a, n=None, axis=-1, norm=None)

参数说明:

  • a:要进行FFT的输入数组;
  • n:要使用的FFT长度(默认为数组的最后一维的长度);
  • axis:计算FFT的轴(默认为最后一个轴);
  • norm:归一化类型,默认为无。

返回值:

返回带有输出值的一维数组,其长度为n//2+1。

示例
示例1:计算信号的FFT值

下面的示例演示如何使用'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        ]
示例2:使用默认参数计算FFT值

下面的示例演示如何使用默认参数计算一个实数数组的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值。