如何重塑和交错矩阵元素?

Nik*_*lin 2 matlab

具有时间序列的值,我想将其重新整形为nx4矩阵[X y],以便将这些值用作机器学习算法的输入和输出值.

X(i)是1x3输入向量,y是输出标量值.

该算法每隔2个序列值(3个值)作为输入,以预测第4个值.

举一个实际的例子,假设我们有一个序列

[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16]
Run Code Online (Sandbox Code Playgroud)

[X y]矩阵应如下:

[1 3 5 7; 2 4 6 8; 9 11 13 15; 10 12 14 16]
Run Code Online (Sandbox Code Playgroud)

为了获得每一行,我编写了以下代码:

vec1 = timeSeries(1:2:end);
XyVec1 = reshape(vec1,4,[])' 
Run Code Online (Sandbox Code Playgroud)

类似地,可以写它来得到偶数:

vec2 = timeSeries(2:2:end);
XyVec2 = reshape(vec2,5,[])'
Run Code Online (Sandbox Code Playgroud)

我不知道怎么做的是将矩阵vec1和vec2行交错到get

[vec(1,:); vec2(1,:);vec1(2,:), vec2(2,:)...]
Run Code Online (Sandbox Code Playgroud)

有谁知道如何交错两个(或更多)矩阵的行?

Joe*_*cou 5

尝试

result = zeros(size(vec1,1)+size(vec2,1),size(vec1,2));
result(1:2:end,:) = vec1;
result(2:2:end,:) = vec2;
Run Code Online (Sandbox Code Playgroud)

重复使用matlab索引工具或插入正确行的元素

样本八度模拟:http://ideone.com/RVgmYA