【问题标题】:the easiest way to convert matrix to one row vector [duplicate]将矩阵转换为单行向量的最简单方法[重复]
【发布时间】:2011-02-13 10:08:58
【问题描述】:

可能重复:
How do you concatenate the rows of a matrix into a vector in MATLAB?

嗨,

有谁知道通过以下方式将原始矩阵的所有行(从 1 到 M)放入新矩阵的第一行,从 M x N 矩阵创建一个行矩阵(向量)的最佳方法是:

A = [row1; row2; ...; rowM]
B = [row1, row2, ..., rowM]

例子:

A = [1 1 0 0; 0 1 0 1]
B = [1 1 0 0 0 1 0 1]

有没有简单的方法或者内置函数可以从 A 生成矩阵 B?

【问题讨论】:

标签: matlab matrix


【解决方案1】:

试试这个:B = A ( : ),或者试试reshape函数。

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

【讨论】:

  • B = A(:); 在这种情况下不起作用,因为它会将所有列放入一个列向量中。
  • 如果你有复数,不要使用',因为它会翻转复数组件的符号;使用B = permute([2 1],A(:))
  • B = A(:) 比重塑更简单,谢谢!您可以在不影响 B 复数的情况下进行转置。 ('前的一个点)。
  • 尝试 A'(:) 或 A.'(:) 给我“错误:不平衡或意外的括号或括号。”但是 B = A'; B(:) 给了我正确的答案。为什么不在这里转置和 (:) 组合?
  • @R.Falque A(:)' 与 A'(:) 不同。 (A')(:) 也失败了。也许您只能在简单的变量引用上使用 (:),而不是表达式。绝对 +1 对 Chuck 的评论。
【解决方案2】:

你可以使用函数RESHAPE:

B = reshape(A.',1,[]);

【讨论】:

  • 小心这里的'操作符,好像你的数据很复杂,这会给你一个共轭转置。更好的是使用。在这个操作中。
  • @woodchips:好点。已更新。
  • 我认为 this 是问题的准确答案!
猜你喜欢
  • 2013-11-21
  • 2019-01-15
  • 2011-06-21
  • 1970-01-01
  • 1970-01-01
  • 2016-04-01
  • 2012-02-05
相关资源
最近更新 更多