将语句从NumPy转换为MatLab

tnkciper  于 2022-11-15  发布在  Matlab
关注(0)|答案(1)|浏览(180)

我正在将一个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的。

sr4lhrrt

sr4lhrrt1#

假设eigenvalues是一个长度为N的一维数组,那么sqrt(eigenvalues)[newaxis,:]将是一个1xN数组。这将转换为sqrt(eigenvalues)sqrt(eigenvalues).',具体取决于eigenvalues数组在MATLAB中的方向。
然后,*操作进行广播(在matlab中,这称为单例扩展)。它看起来像是将每个特征向量乘以相应特征值的平方根(假设特征向量是列)。
如果在MatLab中计算特征分解,如下所示:

[eigenvectors, eigenvalues] = eig(A);

然后你就会这么做:

basis = sqrt(eigenvalues) * eigenvectors.';

basis = (eigenvectors * sqrt(eigenvalues)).';

(请注意括号),因为eigenvalues是对角矩阵。

相关问题