leg*_*gas 26 arrays matlab matrix
在MATLAB中转置向量/矩阵时,我已经看过并使用了'(撇号)运算符很长一段时间.
例如:
>> v = [ 1 2 3 ]'
v =
1
2
3
Run Code Online (Sandbox Code Playgroud)
然而,这是我最近发现的共轭转置,或者ctranspose.
这似乎只涉及涉及复杂数字的情况,如果您想要转换矩阵而不获取共轭,则需要使用.'opertator.
那么使用.'真实矩阵和向量是否是好习惯?我们应该怎样教MATLAB初学者?
Lui*_*ndo 25
有趣的问题!
我肯定会说.'当你想要转置时使用它是一个好习惯,即使这些数字是真实的,因此'会产生相同的效果.主要原因是:
概念清晰度:如果您需要转置,只需转置.不要投入不必要的共轭.这是不好的做法.你会习惯写作'转置,但不会注意到差异.有一天,你会写'时,.'应使用.作为可能的例子,请看这个问题或者这个问题.
面向未来.如果将来某一天将您的功能应用于复杂输入,行为将突然改变,您将很难找到原因.相信我,我知道我说的话1.
当然,如果您使用的是实际输入,但是对于复杂输入,共轭会有意义,请使用'.例如,如果要为实数向量定义点积,则可能适合使用',因为如果您希望将来使用复杂输入,则共轭转置会更有意义.
1在我早期的Matlab时代,我花了很长时间才追溯到我的代码中的某个问题,结果发现这是由于'我应该使用的时候造成的.'.真让我心烦意乱的是,我的教授实际上说这'意味着转置!他忘了提到共轭,因此我的错误.我学到的经验教训:'不是.'; 和教授可以告诉你一些完全错误的事情:-)
Yvo*_*von 12
我非常偏见:我使用的大多数情况'都是纯粹的"正式",也与数学计算无关.我很可能想要将索引序列的矢量旋转1:1090度.
我罕使用'到矩阵,因为它是不明确的,为什么要进行转置你已经回答了第一个问题是- ?
如果矩阵最初是在错误的方向上定义的,我宁愿将矩阵定义为正确的矩阵,但之后不要将其转动.
为了转置矩阵进行数学计算,我明确地使用transpose和ctranspose.因为通过这样做,代码更容易阅读(不必专注于那些小点)和调试(不必关心丢失的点).像往常一样执行以下作业,例如点积.
ray*_*ica 10
这实际上是许多MATLAB程序员争论的主题.有人说,如果你知道自己在做什么,那么你可以继续使用,'如果你知道你的数据是纯粹的,并且.'如果你的数据很复杂就可以使用.然而,有些人(比如Luis Mendo)主张你应该一直使用这一事实,.'这样你就不会感到困惑.
这样就可以正确处理函数输入,以防输入这些函数所需的数据变得复杂.有一段时间需要复杂的换位,例如计算复矢量的幅度平方.事实上,Loren Shure在她的一个MATLAB摘要中(我记不清哪一个......)说这是引入复杂转置的原因之一.
我的建议是,.'如果您的目标是转置数据,则应始终使用.如果你想要做一些复杂的运算,然后使用'和.'依赖于何种操作/计算你在干什么.显然,Luis Mendo的良好做法已经让我感到震惊.