Сингулярное разложение
возвращает сингулярные значения матричного 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
матрица, которая удовлетворяет .
Для полных разложений, svd(A)
возвращает U
как m
- m
удовлетворение унитарной матрицы . Столбцы 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
матрица, которая удовлетворяет .
Для полных разложений, svd(A)
возвращает V
как n
- n
удовлетворение унитарной матрицы . Столбцы V
это не соответствует ненулевой форме сингулярных значений набор ортонормированных векторов базиса пустого пробела A
.
Различные машины и релизы MATLAB могут произвести различные сингулярные векторы, которые все еще численно точны. Соответствующие столбцы в U
и V
может инвертировать их знаки, поскольку это не влияет на значение выражения A = U*S*V'
.
Указания и ограничения по применению:
Синтаксис с тремя выходами [U,S,V] = svd(X)
не поддержан. Для трех выходных параметров необходимо задать svd(X,'econ')
или svd(X,0)
.
Для получения дополнительной информации см. Раздел "Высокие массивы".
Указания и ограничения по применению:
Генерация кода использует различный SVD
реализация, чем использование MATLAB. Поскольку сингулярное разложение не уникально, левые и правые сингулярные векторы могут отличаться от вычисленных MATLAB.
Когда входная матрица содержит неличное значение, сгенерированный код не выдает ошибку. Вместо этого выход содержит NaN
значения.
Генерация кода не поддерживает входные параметры разреженной матрицы для этой функции.
Указания и ограничения по применению:
Генерация кода использует различный SVD
реализация, чем использование MATLAB. Поскольку сингулярное разложение не уникально, левые и правые сингулярные векторы могут отличаться от вычисленных MATLAB.
Когда входная матрица содержит неличное значение, сгенерированный код не выдает ошибку. Вместо этого выход содержит NaN
значения.
Генерация кода не поддерживает входные параметры разреженной матрицы для этой функции.
Эта функция полностью поддерживает массивы графического процессора. Для получения дополнительной информации смотрите функции MATLAB Запуска на графическом процессоре (Parallel Computing Toolbox).
Эта функция полностью поддерживает распределенные массивы. Для получения дополнительной информации смотрите функции MATLAB Запуска с Распределенными Массивами (Parallel Computing Toolbox).
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.