СВД на символьной матрице c на Matlab - PullRequest
0 голосов
/ 07 февраля 2020

Я пытаюсь вычислить SVD для этой матрицы c, используя Matlab

0 2 3 4*a 5*a
6 7 1 8*a 9*a

, используя следующий код:

syms a
M = [0 2 3 4*a 5*a ; 6 7 1 8*a 9*a]
s = svd(M)

Это работает, и я могу получить сингулярные значения, но используя следующий код, я могу получить ортогональные матрицы.

[U,S,V] = svd(M)

Я получаю эту ошибку:

Ошибка при использовании sym / svd (строка 85) Входные аргументы должен быть конвертируемым в числа с плавающей точкой.

Как с этим справиться?

1 Ответ

2 голосов
/ 07 февраля 2020

Из документов (выделено мной):

[U, S, V] = svd (A) возвращает число c унитарных матриц U и V с столбцы, содержащие особые векторы, и диагональную матрицу S, содержащую особые значения. Матрицы удовлетворяют условию A = U S V ', где V' - эрмитово транспонирование (комплексное сопряженное транспонирование) для V. В вычислениях сингулярного вектора используется арифметика переменной точности c. SVD не вычисляет символы c особые векторы. Следовательно, входная матрица A должна быть преобразована в числа с плавающей запятой. Например, это может быть матрица символов c чисел.

Так просто, вы не можете. Это не поддерживается.

...