matlab - 通过重复重叠向量创建矩阵

标签 matlab vector matrix vectorization

我很难在 MATLAB 中编写以下代码: 假设您有以下向量:

a   
b
c
d
e
f
g
h
...

指定一个(偶数)窗口大小,创建以下维度矩阵 Ln 列(例如,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/

相关文章:

matlab - OpenCV 和 Latent SVM 检测器

matlab - 用另一个矩阵的元素替换矩阵的某些元素[Matlab/Octave]

arrays - 一种计算向量误差的更快方法

python - 如何使用嵌套for循环将两个矩阵相加?

java - 无法从双 HashMap 中检索

C++ 复制多维 vector

c++ - 如何用不重要的值填充数组(声明后)?

vector - 如何从函数中的Vec返回单个元素?

matlab - 使用向量选择 matlab 数组的列

ios - 如何快速创建 3D 数组/矩阵?