为什么MATLAB中的reshape()给出与R中的matrix()相同的输出?

时间:2013-06-04 08:03:11

标签: r matlab

第一个代码在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

4 个答案:

答案 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)'