【发布时间】:2021-03-16 13:11:32
【问题描述】:
我正在使用 numpy 库来计算 freq = np.fft.rfftfreq(len_data, 1.0 / rate) ,如果我没有错,那么这个频率是没有单位的。 如何 我可以把它转换成赫兹。我正在使用以下代码:
import numpy as np
import scipy.io.wavfile
from scipy import signal
def read_wav_file(file_name):
sample_rate, Data_audio = scipy.io.wavfile.read(file_name)
return sample_rate, Data_audio
def getFFT(Data_audio, sample_rate):
len_data = len(Data_audio)
Data_audio = Data_audio * np.hamming(len_data)
fft = np.fft.rfft(Data_audio)
fft = np.abs(fft)
ret_len_FFT = len(fft)
freq = np.fft.rfftfreq(len_data, 1.0 / sample_rate)
return ( freq[:int(len(freq))], fft[:int(ret_len_FFT)], ret_len_FFT )
sample_rate_rec, Data_audio_rec = read_wav_file('2020rec.wav')
frequency_rec, fft_rec, ret_lenFFT_rec = getFFT(Data_audio_rec, sample_rate_rec)
print("frequency_rec: " + str(frequency_rec) )
**Output**
frequency_rec: [0.00000000e+00 8.33481508e-03 1.66696302e-02 ... 2.39999833e+04
2.39999917e+04 2.40000000e+04]
# To convert frequencies into float format
np.set_printoptions(formatter={'float':'{:f}'.format})
print("frequency_rec: " + str(frequency_rec) )
**Output**
frequency_rec: [0.000000 0.008307 0.016614 ... 23999.983386 23999.991693 24000.000000]
【问题讨论】:
-
您的代码没有运行。请先修复代码。
-
运行良好,让我在这里分享更多代码并进行编辑。
-
@orlp 请再次检查。谢谢。
-
你仍然没有在任何地方定义
rate。 -
@orlp 抱歉,已进行更改。
标签: python numpy scipy fft frequency