如何在 MATLAB 中使用重叠帧重建信号

信息处理 matlab 离散信号 声音的 时域 阵列信号处理
2022-02-02 12:23:28

我知道我们可以使用buffermatlab 中的函数将长信号拆分为重叠帧。但是有什么函数可以用来把帧放回去重建信号吗?

这是我在 Matlab 中的当前代码

n = 0.1:0.1:100;
y = sin(n*pi*0.5)';
Nw = 100;  % window length
Nh = 25;   % hop size
Y = buffer(y,Nw,Nw-Nh, 'nodelay');  % Y is the matrix containing the overlapping frames

我接下来要做的是使用 Y 重构原始信号 y。像这样的东西

yNew = unbuffer(Y, Nw, Nw-Nh)

当然unbuffer,没有我所知道的 , 之类的功能。所以我的问题是,是否有任何功能可以完成这项工作unbuffer

情况类似于这里的这个问题:https ://www.reddit.com/r/matlab/comments/361y9w/reverse_buffer_function/ ,这是 5 年前的,仍然没有收到任何答案。

2个回答

如果你想在快速的同时做任何重叠和任意大的向量,这有点麻烦。

如果你只做 50% 的重叠,那么直接写一个 unbuffer 函数

Python中的无缓冲有用的帖子MATLAB 文档中漂亮的视觉效果(底部)。