Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
利用MATLAB实现wav文件的帧划分_Matlab - Fatal编程技术网

利用MATLAB实现wav文件的帧划分

利用MATLAB实现wav文件的帧划分,matlab,Matlab,我有一个.wav文件,需要对其执行STFT。说我不知道文件的长度。如何将其分解为更小的帧并执行STFT 我上次使用MatLab已经有很长时间了,但我认为通用算法应该是: 获取输入信号 使用窗口函数逐点相乘(例如“n”个样本的矩形)。这意味着您现在将拥有一个由“n”个样本组成的框架 对这帧进行FFT 通过“m”样本移动窗口(m=移位,通常约为“n”的25%)。执行步骤2和3 如果到达信号的末尾,则获取信号的任意多个样本,并用零填充其余样本。执行步骤2和3 现在您有了一个3D绘图-频率、振幅和时间。

我有一个.wav文件,需要对其执行STFT。说我不知道文件的长度。如何将其分解为更小的帧并执行STFT

我上次使用MatLab已经有很长时间了,但我认为通用算法应该是:

  • 获取输入信号
  • 使用窗口函数逐点相乘(例如“n”个样本的矩形)。这意味着您现在将拥有一个由“n”个样本组成的框架
  • 对这帧进行FFT
  • 通过“m”样本移动窗口(m=移位,通常约为“n”的25%)。执行步骤2和3
  • 如果到达信号的末尾,则获取信号的任意多个样本,并用零填充其余样本。执行步骤2和3
  • 现在您有了一个3D绘图-频率、振幅和时间。密谋获取STFT
    旁注:MatLab中是否没有STFT函数?您查过了吗?

    好的,谢谢。我还在学习MATLAB,所以你能为第2步和第4步编写代码吗????真的很有帮助。。。。不,stft没有唯一的功能。顺便说一下,不管我的wav文件的长度如何,我可以采集1024个样本吗?你可以采集1024个样本。但要确保,如果到达文件的末尾,就需要用零填充剩余的样本。