我有一个长度为 12769 的音频信号。我试图通过将其分成 1024 个样本的小窗口来对其执行 STFT。这给了我 12 个确切的窗口,而剩下 481 个点。由于我需要 543 (1024 - 481) 更多的点来组成 1024 个样本,我使用以下代码来归零。
f = [a zeros(1,542)];
a
音频文件在哪里。但是我得到一个错误说
???使用 ==> horzcat 时出错
CAT 参数维度不一致。
我该如何克服呢?
您的向量a
是列向量,不能与行向量连接zeros(1,542)
。改为使用zeros(542,1)
。但是,使用起来要容易得多
f = a;
f(1024*ceil(end/1024)) = 0;
MATLAB 将对向量进行零填充,直到元素 1024,并且它独立于列或行的数组。
您可以使用删除多余的 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 ;