将矩阵转换为一行向量的最简单方法

Nik*_*lin 20 matlab matrix

可能重复:
如何在MATLAB中将矩阵的行连接到向量中?

嗨,

有没有人知道从M×N矩阵创建一个行矩阵(向量)的最佳方法是将原始矩阵的所有行(从1到M)放入新矩阵的第一行,方法如下:

A = [row1; row2; ...; rowM]
B = [row1, row2, ..., rowM]
Run Code Online (Sandbox Code Playgroud)

例:

A = [1 1 0 0; 0 1 0 1]
B = [1 1 0 0 0 1 0 1]
Run Code Online (Sandbox Code Playgroud)

是否有一个简单的方法或者可能是内置函数可以从A生成矩阵B?

And*_*nck 29

试试这个:B = A ( : )或试试这个reshape功能.

http://www.mathworks.com/access/helpdesk/help/techdoc/ref/reshape.html

  • 尝试A'(:)或A.'(:)给我'错误:不平衡或意外的括号或括号.' 但是B = A'; B(:)给了我正确的答案.为什么不转置和(:)组成这里? (3认同)
  • `B = A(:);`在这种情况下不起作用,因为它会将所有列放入一个列向量中. (2认同)
  • 不要使用`'`如果你有复杂的数字,因为它翻转复杂组件的迹象; 使用`B = permute([2 1],A(:))` (2认同)
  • B = A(:) 有效并且比 reshape 更简单,谢谢!你可以转置而不影响 B 的复合体。(')之前的一个点。 (2认同)
  • @R.Falque A(:)' 与 A'(:) 不同。(A')(:) 也失败了。也许您只能在简单变量引用上使用 (:),而不能在表达式上使用。对查克的评论肯定+1。 (2认同)

gno*_*ice 24

您可以使用RESHAPE功能:

B = reshape(A.',1,[]);
Run Code Online (Sandbox Code Playgroud)

  • 这里的'操作符要小心,好像你的数据很复杂,这会给你一个共轭转置.更好的是使用.' 在这个操作中. (5认同)
  • 我认为**这个**是问题的确切答案! (2认同)