【问题标题】:Unbalanced or unexpected parenthesis or bracket when transposing移调时不平衡或意外的括号或括号
【发布时间】:2015-07-30 02:45:47
【问题描述】:

我在使用 MATLAB R2014a 时遇到此错误。

A = [1 2 3; 4 5 6];
A'(:) = [2 2 2 3 3 3];

但是当我把它分成两个步骤时它会起作用:

B = A';
B(:) = [2 2 2 3 3 3];

有人知道原因吗?

【问题讨论】:

  • A'(:) 是无效的 Matlab 语法。请改用A(:).'。 (使用.' 而不是' 进行矩阵转置而不是共轭转置)。除了变量名之外,您不能在任何内容之后使用括号索引。
  • @David 请将其发布为答案
  • @David 但是A(:).'A.'(:) 的作用不同。你可以使用A = reshape([2 2 2 3 3 3], size(A,2), size(A,1));

标签: matlab transpose parentheses brackets


【解决方案1】:

在 Matlab 中,你不能做A'(:),因为索引必须首先出现。相反,请使用A(:)'(或使用reshape 提供更好的控制:reshape(A,1,[])(我认为!))。

你可以做一些奇怪的事情,比如:A{2}(:)A.matrix(1),因为它们只是索引,但你不能做这样的事情:sum(A)(:)A^2(:)

一个更技术性的说明,您应该使用A(:).',因为' 执行共轭转置,而.' 执行常规矩阵转置。当然在大多数情况下它们是相同的,但是最好做正确的事情,你永远不会被一个(非常)奇怪的错误绊倒!

【讨论】:

  • 你可以提到函数transpose 等同于.'
  • 这是一个很好的观点,让一切都更加清晰@Matt。
猜你喜欢
  • 2013-04-20
  • 2013-06-05
  • 2014-10-23
  • 2014-11-10
  • 2017-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多