Декомпозиция сингулярных значений
возвращает сингулярные значения матрицы s = svd(A)A в порядке убывания.
[ производит разложение экономного размера U,S,V] = svd(A,'econ')mоколо-n матрица A:
m > n - Только первый n столбцы U вычисляются, и S является nоколо-n.
m = n — svd(A,'econ') эквивалентно svd(A).
m < n - Только первый m столбцы V вычисляются, и S является mоколо-m.
Декомпозиция экономного размера удаляет дополнительные строки или столбцы нулей из диагональной матрицы сингулярных значений, Sвместе со столбцами в любом из них U или V которые умножают эти нули в выражении A = U*S*V'. Удаление этих нулей и столбцов может увеличить время выполнения и сократить требования к хранению без ущерба для точности разложения.
Вычислите сингулярные значения матрицы полного ранга.
A = [1 0 1; -1 -2 0; 0 1 -1]
A = 3×3
1 0 1
-1 -2 0
0 1 -1
s = svd(A)
s = 3×1
2.4605
1.6996
0.2391
Найти сингулярное разложение прямоугольной матрицы A.
A = [1 2; 3 4; 5 6; 7 8]
A = 4×2
1 2
3 4
5 6
7 8
[U,S,V] = svd(A)
U = 4×4
-0.1525 -0.8226 -0.3945 -0.3800
-0.3499 -0.4214 0.2428 0.8007
-0.5474 -0.0201 0.6979 -0.4614
-0.7448 0.3812 -0.5462 0.0407
S = 4×2
14.2691 0
0 0.6268
0 0
0 0
V = 2×2
-0.6414 0.7672
-0.7672 -0.6414
Подтвердить связь A = U*S*V', в пределах точности машины.
U*S*V'
ans = 4×2
1.0000 2.0000
3.0000 4.0000
5.0000 6.0000
7.0000 8.0000
Вычислите полное разложение прямоугольной матрицы и разложение по экономичности.
A = [1 2; 3 4; 5 6; 7 8]
A = 4×2
1 2
3 4
5 6
7 8
[U,S,V] = svd(A)
U = 4×4
-0.1525 -0.8226 -0.3945 -0.3800
-0.3499 -0.4214 0.2428 0.8007
-0.5474 -0.0201 0.6979 -0.4614
-0.7448 0.3812 -0.5462 0.0407
S = 4×2
14.2691 0
0 0.6268
0 0
0 0
V = 2×2
-0.6414 0.7672
-0.7672 -0.6414
[U,S,V] = svd(A,'econ')U = 4×2
-0.1525 -0.8226
-0.3499 -0.4214
-0.5474 -0.0201
-0.7448 0.3812
S = 2×2
14.2691 0
0 0.6268
V = 2×2
-0.6414 0.7672
-0.7672 -0.6414
С тех пор A 4 на 2, svd(A,'econ') возвращает меньшее число столбцов в U и меньше строк в S по сравнению с полным разложением. Дополнительные строки нулей в S исключаются вместе с соответствующими столбцами в U которые умножались бы на эти нули в выражении A = U*S*V'.
Используйте результаты разложения сингулярных значений для определения ранга, пространства столбцов и нулевого пространства матрицы.
A = [2 0 2; 0 1 0; 0 0 0]
A = 3×3
2 0 2
0 1 0
0 0 0
[U,S,V] = svd(A)
U = 3×3
1 0 0
0 1 0
0 0 1
S = 3×3
2.8284 0 0
0 1.0000 0
0 0 0
V = 3×3
0.7071 0 -0.7071
0 1.0000 0
0.7071 0 0.7071
Вычислите ранг, используя число ненулевых сингулярных значений.
s = diag(S); rank_A = nnz(s)
rank_A = 2
Вычислить ортонормированный базис для пространства столбцов A с использованием столбцов U которые соответствуют ненулевым сингулярным значениям.
column_basis = U(:,logical(s))
column_basis = 3×2
1 0
0 1
0 0
Вычислить ортонормированный базис для нулевого пространства A с использованием столбцов V которые соответствуют сингулярным значениям, равным нулю.
null_basis = V(:,~s)
null_basis = 3×1
-0.7071
0
0.7071
Функции rank, orth, и null предоставить удобные способы расчета этих количеств.
A - Входная матрицаВходная матрица. A может быть квадратным или прямоугольным.
Типы данных: single | double
Поддержка комплексного номера: Да
s - Сингулярные значенияСингулярные значения, возвращаемые в виде вектора-столбца. Сингулярные значения являются неотрицательными вещественными числами, перечисленными в порядке убывания.
U - Левые сингулярные векторыЛевые сингулярные векторы, возвращаемые в виде столбцов матрицы.
Для mоколо-n матрица A с m > n, разложение по размеру экономики svd(A,'econ') и svd(A,0) вычислить только первый n столбцы U. В этом случае столбцы U ортогональны и U является mоколо-n матрица, удовлетворяющая In.
Для полных разложений, svd(A) прибыль U как mоколо-m унитарная матрица, удовлетворяющая = Im. СтолбцыU которые соответствуют ненулевым сингулярным значениям, образуют набор ортонормированных базисных векторов для диапазона A.
Различные машины и выпуски MATLAB ® могут создавать различные сингулярные векторы, которые все еще являются численно точными. Соответствующие столбцы вU и V могут перевернуть свои знаки, так как это не влияет на значение выражения A = U*S*V'.
S - Сингулярные значенияСингулярные значения, возвращаемые в виде диагональной матрицы. Диагональные элементы S - неотрицательные сингулярные значения в порядке убывания. Размер S является следующим:
Для mоколо-n матрица A, разложение по размеру экономики svd(A,'econ') прибыль S как квадратная матрица порядка min([m,n]).
Для полных разложений, svd(A) прибыль S с тем же размером, что и A.
Если m > n, то svd(A,0) прибыль S как квадратная матрица порядка min([m,n]).
Если m < n, то svd(A,0) прибыль S с тем же размером, что и A.
V - Правые сингулярные векторыПравые сингулярные векторы, возвращаемые в виде столбцов матрицы.
Для mоколо-n матрица A с m < n, разложение экономики svd(A,'econ') вычисляет только первый m столбцы V. В этом случае столбцы V ортогональны и V является nоколо-m матрица, удовлетворяющая Im.
Для полных разложений, svd(A) прибыль V как nоколо-n унитарная матрица, удовлетворяющая = In. СтолбцыV которые не соответствуют ненулевым сингулярным значениям, образуют набор ортонормированных базисных векторов для нулевого пространства A.
Различные машины и версии MATLAB могут создавать различные сингулярные векторы, которые все еще являются численно точными. Соответствующие столбцы в U и V могут перевернуть свои знаки, так как это не влияет на значение выражения A = U*S*V'.
Примечания и ограничения по использованию:
Синтаксис с тремя выходами [U,S,V] = svd(X) не поддерживается. Для трех выходов необходимо указать svd(X,'econ') или svd(X,0).
Дополнительные сведения см. в разделе Массивы Tall.
Примечания и ограничения по использованию:
При создании кода используется другой код SVD реализации, чем использует MATLAB. Поскольку разложение сингулярных значений не является уникальным, левый и правый сингулярные векторы могут отличаться от векторов, вычисленных MATLAB.
Если входная матрица содержит неокончательное значение, генерируемый код не выдает ошибку. Вместо этого выходные данные содержат NaN значения.
Генерация кода не поддерживает разреженные матричные входы для этой функции.
Примечания и ограничения по использованию:
При создании кода используется другой код SVD реализации, чем использует MATLAB. Поскольку разложение сингулярных значений не является уникальным, левый и правый сингулярные векторы могут отличаться от векторов, вычисленных MATLAB.
Если входная матрица содержит неокончательное значение, генерируемый код не выдает ошибку. Вместо этого выходные данные содержат NaN значения.
Генерация кода не поддерживает разреженные матричные входы для этой функции.
Эта функция полностью поддерживает массивы графических процессоров. Дополнительные сведения см. в разделе Запуск функций MATLAB на графическом процессоре (панель инструментов параллельных вычислений).
Эта функция полностью поддерживает распределенные массивы. Дополнительные сведения см. в разделе Запуск функций MATLAB с распределенными массивами (панель инструментов параллельных вычислений).
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.