第一个代码在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
答案 0 :(得分:2)
在MATLAB中,矩阵按列存储。您reshape
的作用是1:6
的行向量,并开始填写新的3 x 2矩阵列:
1 4
2 5
3 6
重塑后的撇号将其转换为产生:
1 2 3
4 5 6
要获得您真正想要的内容,请先使用reshape
创建一个2乘3的矩阵,然后转置它。
reshape(1:6, 2, 3)'
答案 1 :(得分:0)
首先,你在MATLAB中转换一个3x2矩阵,你在R中没有这样做:
>> reshape(1:6,3,2) % NOTE: no apostrophe at the end
ans =
1 4
2 5
3 6
其次,你在R中填充 row ,这与默认值不同(也与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
答案 2 :(得分:0)
你的问题是,你想按行执行命令... imho这在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
答案 3 :(得分:0)
我相信这会为您提供所需的输出:
reshape(1:6, 2, 3)'