在 MATLAB 中转置向量/矩阵时,很长一段时间我只看到并使用过 '
(撇号)运算符。
例如:
>> v = [ 1 2 3 ]'
v =
1
2
3
然而,这是我最近发现的共轭转置,或ctranspose
。
这似乎只在涉及复数时才重要,如果您想转置矩阵而不求共轭,则需要使用 .'
运算符。
对实数矩阵和向量也使用 .'
是好的做法吗?我们应该教 MATLAB 初学者什么?
最佳答案
有趣的问题!
我肯定会说,当您只想转置时,使用 .'
是一种很好的做法,即使数字是真实的,因此 '
会产生相同的效果。主要原因是:
概念清晰:需要转置就转置。不要加入不必要的结合。这是不好的做法。您将习惯于编写
'
进行转置,而不会注意到其中的差异。有一天,当应该使用.'
时,您将编写'
。作为可能的说明,请参见 this question或 this one .面向 future 。如果将来有一天你将你的函数应用于复杂的输入,行为会突然改变,你将很难找到原因。相信我,我知道我在说什么1。
当然,如果您使用的是真实输入,但结合对复杂输入有意义,请务必使用 '
。例如,如果您正在为实数向量定义点积,则使用 '
可能是合适的,因为如果您将来要使用复数输入,共轭转置 would make more sense .
1 在我早期的 Matlab 时代,我花了相当长的时间来追溯我代码中的某个问题,结果证明是由于使用 '
当我应该使用 .'
时。真正让我生气的是,实际上是我的教授说 '
意味着转置!他忘了提到共轭,因此我的错误。我学到的教训:'
不是 .'
;教授可以告诉你一些明显错误的事情:-)
关于arrays - 在 MATLAB 中使用转置与 ctranspose,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25150027/