首页 > 解决方案 > MATLAB - 使用 buffer() 分割向量的问题

问题描述

考虑以下 MATLAB 代码:

x = zeros(1, 500);
overlap_percentage = 0.5;
total_frames = 10;
frame_length =  length(x)/total_frames;
overlapping_frames = overlap_percentage*total_frames;
y = buffer(x, frame_length, overlapping_frames);

我想将我的信号 x 分成 10 个单独的帧,相邻帧之间有 50% 的重叠(当然,在内部,不希望第一帧的第一个元素与最后一帧的最后一个元素重叠)。所以我使用上面的代码。

现在可以肯定的是,生成的 y 数组应该有 10 个大小为 50 的帧?它没有。它有 12 个大小为 50 的帧。这意味着 buffer() 将它分成 12 个不同的帧而不是 10 个。为什么?

标签: matlabsignal-processing

解决方案


我想我刚刚想通了。因为我有重叠的序列,所以我的帧无法等于 x 的长度。它总是会更大


推荐阅读