第一个代码在 R 中:
> matrix(1:6,nrow=3,byrow=T)
[,1] [,2]
[1,] 1 2
[2,] 3 4
[3,] 5 6
第二个代码在 MATLAB 中:
>> reshape(1:6,3,2)'
ans =
1 2 3
4 5 6
在 MATLAB 中,矩阵是按列存储的。您reshape
所做的是获取 的行向量,并开始按列1:6
填充新的 3×2 矩阵:
1 4
2 5
3 6
重塑后的撇号将其转置以产生:
1 2 3
4 5 6
要获得你真正想要的,reshape
首先使用创建一个 2×3 矩阵,然后转置它。
reshape(1:6, 2, 3)'
首先,您在 MATLAB 中转置一个 3x2 矩阵,而您在 R 中没有这样做:
>> reshape(1:6,3,2) % NOTE: no apostrophe at the end
ans =
1 4
2 5
3 6
其次,您在 R 中按行填充,这与默认值不同(也与 MATLAB 的做法不同);
> matrix(1:6,nrow=3,byrow=F)
[,1] [,2]
[1,] 1 4
[2,] 2 5 # yay, results agree!
[3,] 3 6
如果要在 MATLAB 中按行填充,则必须反转参数并转置:
>> reshape(1:6, 2,3).' % NOTE: arguments for row and column counts reversed
ans =
1 2
3 4
5 6
您的问题是,您想按行执行命令……恕我直言,这在 Matlab 中是不可能的。所以你需要一些解决方法
reshape(1:6,2,3)
给你
1 3 5
2 4 6
转置这一切。
reshape(1:6,2,3)'
给你这个结果:
1 2
3 4
5 6
有关更多详细信息,请参阅 Doku 重塑
我相信这会给你你正在寻找的输出:
reshape(1:6, 2, 3)'