1

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

4 回答 4

2

在 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)'
于 2013-06-04T08:08:53.367 回答
0

首先,您在 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
于 2013-06-04T08:11:36.860 回答
0

您的问题是,您想按行执行命令……恕我直言,这在 Matlab 中是不可能的。所以你需要一些解决方法

reshape(1:6,2,3)

给你

1   3   5
2   4   6

转置这一切。

reshape(1:6,2,3)'

给你这个结果:

1   2
3   4
5   6

有关更多详细信息,请参阅 Doku 重塑

于 2013-06-04T08:17:00.393 回答
0

我相信这会给你你正在寻找的输出:

reshape(1:6, 2, 3)'
于 2013-06-04T08:17:14.283 回答