获取行矩阵

时间:2018-04-30 03:59:26

标签: matlab

我想将一个n * n矩阵转换为Matlab中各自的行矩阵。怎么做到这一点?

例如,假设原始矩阵是

7.0000   26.0000    6.0000   60.0000   78.5000

1.0000   29.0000   15.0000   52.0000   74.3000

11.0000    56.0000    8.0000   20.0000  104.3000

我希望输出为

7.0000 26.0000 6.0000 60.0000 78.5000 1.0000 29.0000 15.0000

52.0000 74.3000 11.0000 56.0000 8.0000 20.0000 104.3000

这是行矩阵。

4 个答案:

答案 0 :(得分:3)

由于你想将它重塑为一个向量,reshape可能有点矫枉过正,因为你可以使用线性索引。

A = randi(10,5,5); %Create some matrix
B=A.'; %SLOW
B = B(:).'; %matrix -> vector conversion

另一方面,矩阵的速度 - >矢量转换并不重要,因为它是一个很慢的初始转置,你需要任何方法,例如,菲尔的回答。

答案 1 :(得分:2)

最简单的解决方案是:

Anew = reshape(Aold',1,numel(Aold));

特别重要的是您需要使用Aold的转置。

答案 2 :(得分:0)

我认为你想要的是:

reshape(A, 1, []);

其中A是你的矩阵。例如:

A = rand(5,5);
b = reshape(A, 1, []);

将为您提供1x25矩阵。

答案 3 :(得分:-1)

假设您的原始矩阵是A(有15个元素)

A = [7.0000   26.0000    6.0000   60.0000   78.5000;

1.0000   29.0000   15.0000   52.0000   74.3000;

11.0000    56.0000    8.0000   20.0000  104.3000]

现在你需要的是重塑A成为行向量。

reshape(A,1,[]) % Here 1 means you need one row, and [] means you need is as vector

如果您想要列矢量,可以使用以下

reshape(A,[],1) % this gives a column vector

但是,根据您的目标,以下代码将完成工作

A = [7.0000   26.0000    6.0000   60.0000   78.5000;

1.0000   29.0000   15.0000   52.0000   74.3000;

11.0000    56.0000    8.0000   20.0000  104.3000];

reshape(A,1,[])

输出

ans =

7.0000    1.0000   11.0000   26.0000   29.0000   56.0000    6.0000   15.0000    8.0000   60.0000   52.0000   20.0000   78.5000   74.3000  104.3000

有关详细信息,请在命令窗口中键入以下内容

help reshape