我很难在 MATLAB 中编写以下代码: 假设您有以下向量:
a
b
c
d
e
f
g
h
...
指定一个(偶数)窗口大小,创建以下维度矩阵 L
行 n
列(例如,L = 4
) :
a c e ...
b d f ...
c e g ...
d f h ...
更困难的是采用任意长度的向量,指定窗口的数量,并优化(最大化)窗口大小,从而减少向量末尾的值被转储。
最佳答案
在您的向量中创建索引矩阵。对于 L=4(我假设您重叠 L/2),索引为 [1,2,3,4;3,4,5,6;5,6,7,8] 等。让 x = 1 :L, y = L/2, 索引向量为x+0y,x+1y,x+2y等。
% let your initial data be in vector "data"
L = 4
N = floor(length(data)/(L/2))-1 % number of windows, or you specify this
mi = repmat(1:L,[N,1]) + repmat((L/2) * (0:(N-1))',[1,L]) % x + y * 0,1,2...
out = data(mi) % out is N-by-L, transpose to L-by-N if you like
关于matlab - 通过重复重叠向量创建矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12966512/