我有一个长度为12769的音频信号。我试图通过将其分成1024个样本的小窗口来对其执行STFT。这给了我12个精确的窗口,而剩下481个点。由于我需要543(1024 - 481)个点来构成1024个样本,我使用以下代码来填充零点。
f = [a zeros(1,542)];
其中a
是音频文件。
但是我得到一个错误说
???使用==>时出错horzcat
CAT参数维度不一致。
我怎样才能克服这个?
答案 0 :(得分:1)
您的向量a
是列向量,无法与行向量zeros(1,542)
连接。请改用zeros(542,1)
。
但是,使用
f = a;
f(1024*ceil(end/1024)) = 0;
MATLAB将零向量填充到元素1024,并且它独立于列或行的数组。
答案 1 :(得分:-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 ;