我正在将一个Python类转换为MatLab。其中大部分都很简单,但我不太擅长使用Python语法(我很少用到它)。我纠结于以下几点:
# find the basis that will be uncorrelated using the covariance matrix
basis = (sqrt(eigenvalues)[newaxis,:] * eigenvectors).transpose()
有没有人能帮我弄清楚等效于MatLab的语法是什么?
我通过Google发现,np.newaxis
增加了数组的维度,而transpose
非常不言而喻。因此,对于newaxis
,在MatLab中使用与cat
相关的东西就可以了,但是我真的不清楚Python是如何处理数组tbh的。
1条答案
按热度按时间sr4lhrrt1#
假设
eigenvalues
是一个长度为N的一维数组,那么sqrt(eigenvalues)[newaxis,:]
将是一个1xN数组。这将转换为sqrt(eigenvalues)
或sqrt(eigenvalues).'
,具体取决于eigenvalues
数组在MATLAB中的方向。然后,
*
操作进行广播(在matlab中,这称为单例扩展)。它看起来像是将每个特征向量乘以相应特征值的平方根(假设特征向量是列)。如果在MatLab中计算特征分解,如下所示:
然后你就会这么做:
或
(请注意括号),因为
eigenvalues
是对角矩阵。