0

我有一个长度为 12769 的音频信号。我试图通过将其分成 1024 个样本的小窗口来对其执行 STFT。这给了我 12 个确切的窗口,而剩下 481 个点。由于我需要 543 (1024 - 481) 更多的点来组成 1024 个样本,我使用以下代码来归零。

f = [a zeros(1,542)]; 

a音频文件在哪里。但是我得到一个错误说

???使用 ==> horzcat 时出错

CAT 参数维度不一致。

我该如何克服呢?

4

2 回答 2

1

您的向量a是列向量,不能与行向量连接zeros(1,542)。改为使用zeros(542,1)。但是,使用起来要容易得多

f = a;
f(1024*ceil(end/1024)) = 0;

MATLAB 将对向量进行零填充,直到元素 1024,并且它独立于列或行的数组。

于 2013-08-18T14:34:34.547 回答
-1

您可以使用删除多余的 481 个样本

Total_Samples = length(a);
for i=1 : Total_Samples-481
    a_new[i] = a[i];

或者您可以通过使用添加额外的 543 个零样本

Total_Samples = length(a);
for i=Total_Samples+1 : Total_Samples+543
    a[i] = 0 ;
于 2013-08-18T14:40:42.570 回答