arrays - 在 MATLAB 中使用转置与 ctranspose

标签 arrays matlab matrix

在 MATLAB 中转置向量/矩阵时,很长一段时间我只看到并使用过 '(撇号)运算符。

例如:

>> v = [ 1 2 3 ]'

v = 

    1
    2
    3

然而,这是我最近发现的共轭转置,或ctranspose

这似乎只在涉及复数时才重要,如果您想转置矩阵而不求共轭,则需要使用 .' 运算符。

对实数矩阵和向量也使用 .' 是好的做法吗?我们应该教 MATLAB 初学者什么?

最佳答案

有趣的问题!

我肯定会说,当您只想转置时,使用 .' 是一种很好的做法,即使数字是真实的,因此 ' 会产生相同的效果。主要原因是:

  1. 概念清晰:需要转置就转置。不要加入不必要的结合。这是不好的做法。您将习惯于编写 ' 进行转置,而不会注意到其中的差异。有一天,当应该使用 .' 时,您将编写 '。作为可能的说明,请参见 this questionthis one .

  2. 面向 future 。如果将来有一天你将你的函数应用于复杂的输入,行为会突然改变,你将很难找到原因。相信我,我知道我在说什么1

当然,如果您使用的是真实输入,但结合对复杂输入有意义,请务必使用 '。例如,如果您正在为实数向量定义点积,则使用 ' 可能是合适的,因为如果您将来要使用复数输入,共轭转置 would make more sense .

1 在我早期的 Matlab 时代,我花了相当长的时间来追溯我代码中的某个问题,结果证明是由于使用 ' 当我应该使用 .' 时。真正让我生气的是,实际上是我的教授说 ' 意味着转置!他忘了提到共轭,因此我的错误。我学到的教训:' 不是 .';教授可以告诉你一些明显错误的事情:-)

关于arrays - 在 MATLAB 中使用转置与 ctranspose,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25150027/

相关文章:

r - 使用每列的升序整数创建矩阵,并添加额外的移位和最大值

r - 在 R 中使用矢量化创建新矩阵

java - 使用另一个类的对象创建数组 (Java)

matlab - 同时选择多个矩阵中的非 NaN 值

javascript - JS - 数组 forEach 方法说明

matlab - Matlab图例中的粗体符号

matlab - 更改 Matlab 绘图中的字体大小

matlab - 删除包含 NaN 的列以及其他矩阵中的相应列

mysql - 需要迭代数组以捕获所有行 - 目前仅保存 [0] 或第一条记录中的数字

arrays - 在 Swift 中,获取数组中最后两项的最简洁方法是什么?