我有一个大小为X
的矩形矩阵50×4000
,其中m=50
和n=4000
。可以看出,m < n
。我需要计算经济规模奇异值分解(SVD)。 MATLAB有built-in function来执行此任务:
[ U, S, V ] = svd( X, 'econ' )
也会产生“经济规模”分解。如果X
为m
- { - 1}}n
,那么它等同于m >= n
。对于svd( X, 0 )
,只计算m < n
的{{1}}列,m
为V
- { - 1}}。
我读了S
的{{3}}库,并说它。
m
输入
m
:
xgesvd
:指定用于计算全部或部分左奇异向量CALL SGESVD( JOBU, JOBVT, M, N, A, LDA, S, U, LDU, VT, LDVT, WORK, LWORK, INFO )
的选项:=
SGESVD
,JOBU
的所有U
列都会在数组'A'
中返回:=
M
,返回U
的第一个U
列;=
'S'
,min(M,N)
的第一U
列将被覆盖在数组'O'
上;=
min(M,N)
,不计算左奇异向量。请注意,U
和A
不能同时为'N'
。
我可以温和地询问社群,在JOBVT
中设置JOBU
或'O'
是否等同于使用MATLAB JOBU = 'S'
?如果是这样,拥有一个示例代码将是伟大的。我还想提一下,在SVD计算之后不再需要我的原始矩阵JOBU = 'O'
的条目,并且可以用函数的输出替换。非常感谢你。