我想将一个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
这是行矩阵。
答案 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