可以将LAPACK中的dgesvd用于经济规模的SVD计算吗?

时间:2016-02-02 18:07:36

标签: c++ algorithm matlab lapack svd

我有一个大小为X的矩形矩阵50×4000,其中m=50n=4000。可以看出,m < n。我需要计算经济规模奇异值分解(SVD)。 MATLAB有built-in function来执行此任务:

  

[ U, S, V ] = svd( X, 'econ' )也会产生“经济规模”分解。如果Xm - { - 1}} n,那么它等同于m >= n。对于svd( X, 0 ),只计算m < n的{​​{1}}列,mV - { - 1}}。

我读了S的{​​{3}}库,并说它。

m
     

输入m

     

xgesvd:指定用于计算全部或部分左奇异向量CALL SGESVD( JOBU, JOBVT, M, N, A, LDA, S, U, LDU, VT, LDVT, WORK, LWORK, INFO ) 的选项:

     

= SGESVDJOBU的所有U列都会在数组'A'中返回:

     

= M,返回U的第一个U列;

     

= 'S'min(M,N)的第一U列将被覆盖在数组'O'上;

     

= min(M,N),不计算左奇异向量。请注意,UA不能同时为'N'

我可以温和地询问社群,在JOBVT中设置JOBU'O'是否等同于使用MATLAB JOBU = 'S'?如果是这样,拥有一个示例代码将是伟大的。我还想提一下,在SVD计算之后不再需要我的原始矩阵JOBU = 'O'的条目,并且可以用函数的输出替换。非常感谢你。

0 个答案:

没有答案