在MATLAB中填充信号零填充

时间:2013-08-18 14:24:48

标签: arrays matlab

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

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

其中a是音频文件。 但是我得到一个错误说

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

CAT参数维度不一致。

我怎样才能克服这个?

2 个答案:

答案 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 ;