Можно ли использовать dgesvd в LAPACK для вычисления SVD экономичного размера?

У меня прямоугольная матрица, Xразмером 50×4000, где m=50 а также n=4000, Как можно заметить, m < n, Мне нужно вычислить экономию размера разложения по сингулярным числам (SVD). MATLAB имеет встроенная функция Для выполнения этой задачи:

[ U, S, V ] = svd( X, 'econ' ) также производит разложение «экономичный размер». Если X является m-от-n с m >= n, то это эквивалентно svd( X, 0 ), За m < nтолько первый m столбцы V вычисляются и S является m-от-m,

Я прочитал документация по LAPACK библиотека для 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',

Могу ли я мягко спросить сообщество, JOBU = 'S' или же JOBU = 'O' в dgesvd эквивалентно использованию MATLAB svd( X, 'econ')? Если это так, иметь пример кода было бы здорово. Я хотел бы также отметить, что записи моей исходной матрицы, X, больше не требуется после вычисления SVD и может быть заменен выходом функции. Большое спасибо.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]