qq_33670784 2020-04-17 11:17 采纳率: 50%
浏览 1329
已结题

语音处理快速傅里叶变换xf = np.fft.rfft(xs,fft_size)/fft_size之后xf长度不变

语音处理快速傅里叶变换xf = np.fft.rfft(xs,fft_size)/fft_size之后信号长度没有变为fft_size/2 +1 长度仍然是xs的长度,按理来说频率个数应为:np.linspace(0, sample_rate/2, fft_size/2+1) 但是这样就会报错:
ValueError: x and y must have same first dimension, but have shapes (257,) and (512, 257)

如果用人工生成的周期信号这样处理不会有上述问题,但是使用wav的语音信号输入,就会出来经过rfft函数信号长度不变的情况,有没有哪位大佬知道这是为啥吗?

def plot_freq(signal, sample_rate, fft_size=512):
xs= signal[:fft_size]
xf = np.fft.rfft(xs,fft_size)/fft_size
freqs = np.linspace(0, sample_rate//2, fft_size/2+1)
xfp = 20 * np.log10(np.clip(np.abs(xf), 1e-20, 1e100))
print(len(xf))

print(len(freqs))
plt.figure(figsize=(20, 5))
plt.plot(freqs, xfp)
plt.xlabel('Freq(hz)')
plt.ylabel('dB')
plt.grid()
plt.show()


  • 写回答

1条回答 默认 最新

  • dabocaiqq 2020-04-17 15:56
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
  • ¥15 C# datagridview 单元格显示进度及值
  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配