【问题标题】:FFT for speech signal with dividing frames in MATLABMATLAB中具有分帧的语音信号的FFT
【发布时间】:2015-03-20 00:55:31
【问题描述】:

我想对语音信号进行 FFT,首先将信号分成 64 个样本帧。我可以通过简单地使用“for”循环来做到这一点。但是我确信在 MATLAB 中有一种更简单的方法。我想做的事情很简单:对

进行 FFT
x1 = [ 1 2 3 4 6];
x2 = [ 2 3 1 3 5];
x3 = [ 3 3 4 5 6];
x  = [x1;x2;x3];
fft(x); 

我搜索后发现FFT中有一个参数是“维度”。但是在我的情况下,我的矩阵是 2015X64。如何用我的原始语音信号生成这个新矩阵?当我想使用 reshape 时,似乎这样做是不合适的。任何帮助将不胜感激。

【问题讨论】:

  • 您的代码采用每列的 FFT。你想要每一行的 FFT 吗?
  • 我意识到我的错误:) 我将转置矩阵。谢谢你的评论。
  • 有一个内置函数可以为你分割音频信号,然后对每个片段进行FFT(即执行短时傅里叶变换),它被称为“频谱图”

标签: matlab fft


【解决方案1】:

我认为这是你想要的

x = randn(1, 2015*64);      % // example data vector
x = reshape(x, 64, []).';   %'// separate x into rows of 64 columns
y = fft(x, [], 2);          % // take DFT of each row

【讨论】:

  • 为什么在 FFT 中使用 2?
  • 那个2表示你想对每一行应用FFT(也就是沿着第二个维度)
猜你喜欢
  • 2015-07-28
  • 2012-12-03
  • 1970-01-01
  • 2020-06-04
  • 2017-09-10
  • 1970-01-01
  • 2012-03-30
  • 2015-11-09
  • 2012-05-04
相关资源
最近更新 更多