Мудрое страницей сингулярное разложение
возвращает сингулярные значения каждой страницы многомерного массива. Каждая страница выхода S
= pagesvd(X
)S(:,:,i)
вектор-столбец, содержащий сингулярные значения X(:,:,i)
в порядке убывания. Если каждая страница X
m
- n
матрица, затем число сингулярных значений, возвращенное на каждой странице S
min(m,n)
.
[
вычисляет сингулярное разложение каждой страницы многомерного массива. Страницы в выходных массивах удовлетворяют: U
,S
,V
] = pagesvd(X
)U(:,:,i) * S(:,:,i) * V(:,:,i)' = X(:,:,i)
.
S
имеет тот же размер как X
, и каждая страница S
диагональная матрица с неотрицательными сингулярными значениями в порядке убывания. Страницы U
и V
унитарные матрицы.
Если X
имеет больше, чем три измерения, затем pagesvd
возвращает массивы с тем же количеством размерностей: U(:,:,i,j,k) * S(:,:,i,j,k) * V(:,:,i,j,k)' = X(:,:,i,j,k)
[___] = pagesvd(
производит разложение размера экономики страниц X
,"econ")X
использование любой из предыдущих комбинаций выходного аргумента. Если X
m
- n
- p
массив, затем:
m > n
— Только первый n
столбцы каждой страницы U
вычисляются, и S
имеет размер n
- n
- p
.
m = n
— pagesvd(X,"econ")
эквивалентно pagesvd(X)
.
m < n
— Только первый m
столбцы каждой страницы V
вычисляются, и S
имеет размер m
- m
- p
.
Разложение размера экономики удаляет дополнительные строки или столбцы нулей от страниц сингулярных значений в S
, наряду со столбцами в любом U
или V
это умножает те нули в выражении U(:,:,i) * S(:,:,i) * V(:,:,i)'
. Удаление этих нулей и столбцов может улучшить время выполнения и уменьшать требования устройства хранения данных, не ставя под угрозу точность разложения.
[___] = pagesvd(___,
задает выходной формат для сингулярных значений, возвращенных в outputForm
)S
. Можно использовать эту опцию с любой из предыдущих комбинаций аргументов ввода или вывода. Задайте "vector"
возвратить каждую страницу S
как вектор-столбец или "matrix"
возвратить каждую страницу S
как диагональная матрица.
Создайте два 6 6 матрицы. Используйте cat
функция, чтобы конкатенировать их по третьему измерению в 6 6 2 массивами.
A = magic(6); B = hilb(6); X = cat(3,A,B);
Вычислите сингулярные значения каждой страницы путем вызова pagesvd
с одним выходом.
S = pagesvd(X)
S = S(:,:,1) = 111.0000 50.6802 34.3839 10.1449 5.5985 0.0000 S(:,:,2) = 1.6189 0.2424 0.0163 0.0006 0.0000 0.0000
Создайте две матрицы 5 на 5. Используйте cat
функция, чтобы конкатенировать их по третьему измерению в 5 5 2 массивами.
A = magic(5); B = hilb(5); X = cat(3,A,B);
Вычислите сингулярные значения каждой страницы массивов.
s = pagesvd(X)
s = s(:,:,1) = 65.0000 22.5471 21.6874 13.4036 11.9008 s(:,:,2) = 1.5671 0.2085 0.0114 0.0003 0.0000
Выполните полное сингулярное разложение на каждой странице массивов.
[U,S,V] = pagesvd(X)
U = U(:,:,1) = -0.4472 -0.5456 0.5117 0.1954 -0.4498 -0.4472 -0.4498 -0.1954 -0.5117 0.5456 -0.4472 -0.0000 -0.6325 0.6325 -0.0000 -0.4472 0.4498 -0.1954 -0.5117 -0.5456 -0.4472 0.5456 0.5117 0.1954 0.4498 U(:,:,2) = -0.7679 0.6019 -0.2142 0.0472 0.0062 -0.4458 -0.2759 0.7241 -0.4327 -0.1167 -0.3216 -0.4249 0.1205 0.6674 0.5062 -0.2534 -0.4439 -0.3096 0.2330 -0.7672 -0.2098 -0.4290 -0.5652 -0.5576 0.3762
S = S(:,:,1) = 65.0000 0 0 0 0 0 22.5471 0 0 0 0 0 21.6874 0 0 0 0 0 13.4036 0 0 0 0 0 11.9008 S(:,:,2) = 1.5671 0 0 0 0 0 0.2085 0 0 0 0 0 0.0114 0 0 0 0 0 0.0003 0 0 0 0 0 0.0000
V = V(:,:,1) = -0.4472 -0.4045 0.2466 -0.6627 0.3693 -0.4472 -0.0056 0.6627 0.2466 -0.5477 -0.4472 0.8202 -0.0000 0.0000 0.3568 -0.4472 -0.0056 -0.6627 -0.2466 -0.5477 -0.4472 -0.4045 -0.2466 0.6627 0.3693 V(:,:,2) = -0.7679 0.6019 -0.2142 0.0472 0.0062 -0.4458 -0.2759 0.7241 -0.4327 -0.1167 -0.3216 -0.4249 0.1205 0.6674 0.5062 -0.2534 -0.4439 -0.3096 0.2330 -0.7672 -0.2098 -0.4290 -0.5652 -0.5576 0.3762
Проверьте отношение для каждой страницы массивов, в точности машины.
e1 = norm(X(:,:,1) - U(:,:,1)*S(:,:,1)*V(:,:,1)',"fro")
e1 = 6.7258e-14
e2 = norm(X(:,:,2) - U(:,:,2)*S(:,:,2)*V(:,:,2)',"fro")
e2 = 4.0054e-16
В качестве альтернативы можно использовать pagemtimes
проверять отношение на обе страницы одновременно.
US = pagemtimes(U,S); USV = pagemtimes(US,"none",V,"ctranspose"); e = max(abs(X - USV),[],"all")
e = 2.4869e-14
Создайте два 6 6 матрицы. Используйте cat
функция, чтобы конкатенировать их по третьему измерению в 6 6 2 массивами.
A = magic(6); B = hilb(6); X = cat(3,A,B);
Вычислите SVD каждой страницы массивов. По умолчанию, pagesvd
возвращает каждую страницу сингулярных значений как диагональная матрица, когда вы задаете несколько выходных параметров.
[U,S,V] = pagesvd(X)
U = U(:,:,1) = -0.4082 0.5574 0.0456 -0.4182 0.3092 0.5000 -0.4082 -0.2312 0.6301 -0.2571 -0.5627 -0.0000 -0.4082 0.4362 0.2696 0.5391 0.1725 -0.5000 -0.4082 -0.3954 -0.2422 -0.4590 0.3971 -0.5000 -0.4082 0.1496 -0.6849 0.0969 -0.5766 -0.0000 -0.4082 -0.5166 -0.0182 0.4983 0.2604 0.5000 U(:,:,2) = -0.7487 0.6145 -0.2403 -0.0622 0.0111 -0.0012 -0.4407 -0.2111 0.6977 0.4908 -0.1797 0.0356 -0.3207 -0.3659 0.2314 -0.5355 0.6042 -0.2407 -0.2543 -0.3947 -0.1329 -0.4170 -0.4436 0.6255 -0.2115 -0.3882 -0.3627 0.0470 -0.4415 -0.6898 -0.1814 -0.3707 -0.5028 0.5407 0.4591 0.2716
S = S(:,:,1) = 111.0000 0 0 0 0 0 0 50.6802 0 0 0 0 0 0 34.3839 0 0 0 0 0 0 10.1449 0 0 0 0 0 0 5.5985 0 0 0 0 0 0 0.0000 S(:,:,2) = 1.6189 0 0 0 0 0 0 0.2424 0 0 0 0 0 0 0.0163 0 0 0 0 0 0 0.0006 0 0 0 0 0 0 0.0000 0 0 0 0 0 0 0.0000
V = V(:,:,1) = -0.4082 0.6234 -0.3116 0.2495 0.2511 0.4714 -0.4082 -0.6282 0.3425 0.1753 0.2617 0.4714 -0.4082 -0.4014 -0.7732 -0.0621 -0.1225 -0.2357 -0.4082 0.1498 0.2262 -0.4510 0.5780 -0.4714 -0.4082 0.1163 0.2996 0.6340 -0.3255 -0.4714 -0.4082 0.1401 0.2166 -0.5457 -0.6430 0.2357 V(:,:,2) = -0.7487 0.6145 -0.2403 -0.0622 0.0111 -0.0012 -0.4407 -0.2111 0.6977 0.4908 -0.1797 0.0356 -0.3207 -0.3659 0.2314 -0.5355 0.6042 -0.2407 -0.2543 -0.3947 -0.1329 -0.4170 -0.4436 0.6255 -0.2115 -0.3882 -0.3627 0.0470 -0.4415 -0.6898 -0.1814 -0.3707 -0.5028 0.5407 0.4591 0.2716
Задайте "vector"
опция, чтобы возвратить каждую страницу сингулярных значений как вектор-столбец.
[U,S,V] = pagesvd(X,"vector")
U = U(:,:,1) = -0.4082 0.5574 0.0456 -0.4182 0.3092 0.5000 -0.4082 -0.2312 0.6301 -0.2571 -0.5627 -0.0000 -0.4082 0.4362 0.2696 0.5391 0.1725 -0.5000 -0.4082 -0.3954 -0.2422 -0.4590 0.3971 -0.5000 -0.4082 0.1496 -0.6849 0.0969 -0.5766 -0.0000 -0.4082 -0.5166 -0.0182 0.4983 0.2604 0.5000 U(:,:,2) = -0.7487 0.6145 -0.2403 -0.0622 0.0111 -0.0012 -0.4407 -0.2111 0.6977 0.4908 -0.1797 0.0356 -0.3207 -0.3659 0.2314 -0.5355 0.6042 -0.2407 -0.2543 -0.3947 -0.1329 -0.4170 -0.4436 0.6255 -0.2115 -0.3882 -0.3627 0.0470 -0.4415 -0.6898 -0.1814 -0.3707 -0.5028 0.5407 0.4591 0.2716
S = S(:,:,1) = 111.0000 50.6802 34.3839 10.1449 5.5985 0.0000 S(:,:,2) = 1.6189 0.2424 0.0163 0.0006 0.0000 0.0000
V = V(:,:,1) = -0.4082 0.6234 -0.3116 0.2495 0.2511 0.4714 -0.4082 -0.6282 0.3425 0.1753 0.2617 0.4714 -0.4082 -0.4014 -0.7732 -0.0621 -0.1225 -0.2357 -0.4082 0.1498 0.2262 -0.4510 0.5780 -0.4714 -0.4082 0.1163 0.2996 0.6340 -0.3255 -0.4714 -0.4082 0.1401 0.2166 -0.5457 -0.6430 0.2357 V(:,:,2) = -0.7487 0.6145 -0.2403 -0.0622 0.0111 -0.0012 -0.4407 -0.2111 0.6977 0.4908 -0.1797 0.0356 -0.3207 -0.3659 0.2314 -0.5355 0.6042 -0.2407 -0.2543 -0.3947 -0.1329 -0.4170 -0.4436 0.6255 -0.2115 -0.3882 -0.3627 0.0470 -0.4415 -0.6898 -0.1814 -0.3707 -0.5028 0.5407 0.4591 0.2716
Если вы задаете один выходной аргумент, такой как S = pagesvd(X)
, затем pagesvd
поведение переключателей, чтобы возвратить каждую страницу сингулярных значений как вектор-столбец по умолчанию. В этом случае можно задать "matrix"
опция, чтобы возвратить каждую страницу сингулярных значений как диагональная матрица.
Создайте 10 3 матрица со случайными целочисленными элементами.
X = randi([0 3],10,3);
Выполните и полное разложение и разложение размера экономики на матрице.
[U,S,V] = pagesvd(X)
U = 10×10
-0.2554 -0.1828 0.6086 -0.6120 -0.0623 -0.2365 -0.1841 0.0165 -0.2369 -0.0792
-0.3408 0.4291 0.0365 0.1237 -0.2953 0.3040 0.0346 -0.3966 -0.3014 -0.5041
-0.3018 -0.3274 -0.6272 -0.0847 -0.3313 -0.3920 -0.2374 -0.2006 -0.1896 0.0717
-0.3560 -0.2919 0.3996 0.7531 -0.0136 -0.1963 -0.1046 0.0518 -0.0521 0.0788
-0.3711 -0.0109 -0.1957 -0.0519 0.8784 0.0025 -0.0413 -0.1224 -0.1273 -0.1289
-0.1298 -0.5635 -0.0331 -0.0842 -0.0685 0.7933 -0.1005 0.0004 -0.0259 0.1119
-0.2002 -0.2327 -0.0099 -0.0782 -0.0595 -0.0962 0.9398 -0.0274 -0.0524 0.0117
-0.3278 0.1769 -0.1847 -0.0238 -0.0987 0.0714 -0.0078 0.8775 -0.1186 -0.1662
-0.4273 0.0534 0.0145 -0.1222 -0.0872 -0.0131 -0.0467 -0.0828 0.8772 -0.1140
-0.3408 0.4291 0.0365 -0.0661 -0.0416 0.1247 0.0203 -0.0831 -0.1055 0.8114
S = 10×3
10.9594 0 0
0 4.6820 0
0 0 3.4598
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
V = 3×3
-0.6167 0.3011 0.7274
-0.6282 0.3686 -0.6852
-0.4744 -0.8795 -0.0382
[Ue,Se,Ve] = pagesvd(X,"econ")
Ue = 10×3
-0.2554 -0.1828 0.6086
-0.3408 0.4291 0.0365
-0.3018 -0.3274 -0.6272
-0.3560 -0.2919 0.3996
-0.3711 -0.0109 -0.1957
-0.1298 -0.5635 -0.0331
-0.2002 -0.2327 -0.0099
-0.3278 0.1769 -0.1847
-0.4273 0.0534 0.0145
-0.3408 0.4291 0.0365
Se = 3×3
10.9594 0 0
0 4.6820 0
0 0 3.4598
Ve = 3×3
-0.6167 0.3011 0.7274
-0.6282 0.3686 -0.6852
-0.4744 -0.8795 -0.0382
С разложением размера экономики, pagesvd
только вычисляет первые 3 столбца Ue
, и Se
имеет размер 3х3.
X
— Входной массивВходной массив в виде матричного или многомерного массива.
Типы данных: single
| double
Поддержка комплексного числа: Да
outputForm
— Выходной формат сингулярных значений"vector"
| "matrix"
Выходной формат сингулярных значений в виде одного из этих значений:
"vector"
— Каждая страница S
вектор-столбец. Это - поведение по умолчанию, когда вы задаете тот выход, как в S = pagesvd(X)
.
"matrix"
— Каждая страница S
диагональная матрица. Это - поведение по умолчанию, когда вы задаете несколько выходных параметров, как в [U,S,V] = pagesvd(X)
.
Пример: [U,S,V] = pagesvd(X,"vector")
возвращает страницы S
как вектор-столбцы вместо диагональных матриц.
Пример: S = pagesvd(X,"matrix")
возвращает страницы S
как диагональные матрицы вместо вектор-столбцов.
Типы данных: char |
string
U
— Оставленные сингулярные векторыОставленные сингулярные векторы, возвращенные как многомерный массив. Каждая страница U(:,:,i)
матрица, столбцы которой являются левыми сингулярными векторами из X(:,:,i)
.
Для m
- n
матричный X(:,:,i)
с m > n
, разложение размера экономики pagesvd(X,"econ")
вычисляет только первый n
столбцы каждой страницы U
. В этом случае, столбцы U(:,:,i)
являются ортогональными и U(:,:,i)
m
- n
матрица, которая удовлетворяет .
В противном случае, pagesvd(X)
возвращает каждую страницу U(:,:,i)
как m
- m
удовлетворение унитарной матрицы . Столбцы U(:,:,i)
это соответствует ненулевой форме сингулярных значений набор ортонормированных векторов базиса пробела столбца X(:,:,i)
.
Различные машины и релизы MATLAB® может произвести различные сингулярные векторы, которые все еще численно точны. Соответствующие столбцы в U(:,:,i)
и V(:,:,i)
может инвертировать их знаки, поскольку это не влияет на значение выражения U(:,:,i) * S(:,:,i) * V(:,:,i)'
.
S
Сингулярные значенияСингулярные значения, возвращенные как многомерный массив. Каждая страница S(:,:,i)
содержит сингулярные значения X(:,:,i)
в порядке убывания.
Для m
- n
матричный X(:,:,i)
:
Разложение размера экономики [U,S,V] = pagesvd(X,"econ")
возвращает S(:,:,i)
как квадратная матрица порядка min([m,n])
.
Полное разложение [U,S,V] = pagesvd(X)
возвращает S
с тем же размером как X
.
Кроме того, сингулярные значения на каждой странице S
возвращены как вектор-столбцы или диагональные матрицы в зависимости от того, как вы вызываете pagesvd
и ли вы задаете outputForm
опция:
Если вы вызываете pagesvd
с одним выходом или задают "vector"
опция, затем каждая страница S
вектор-столбец.
Если вы вызываете pagesvd
с несколькими выходными параметрами или задают "matrix"
опция, затем каждая страница S
диагональная матрица.
V
— Правильные сингулярные векторыПравильные сингулярные векторы, возвращенные как многомерный массив. Каждая страница V(:,:,i)
матрица, столбцы которой являются правильными сингулярными векторами из X(:,:,i)
.
Для m
- n
матричный X(:,:,i)
с m < n
, разложение размера экономики pagesvd(X,"econ")
вычисляет только первый m
столбцы каждой страницы V
. В этом случае, столбцы V(:,:,i)
являются ортогональными и V(:,:,i)
n
- m
матрица, которая удовлетворяет .
В противном случае, pagesvd(X)
возвращает каждую страницу V(:,:,i)
как n
- n
удовлетворение унитарной матрицы . Столбцы V(:,:,i)
это соответствует сингулярным значениям, которые являются нулевой формой набор ортонормированных векторов базиса пустого пробела X(:,:,i)
.
Различные машины и релизы MATLAB могут произвести различные сингулярные векторы, которые все еще численно точны. Соответствующие столбцы в U(:,:,i)
и V(:,:,i)
может инвертировать их знаки, поскольку это не влияет на значение выражения U(:,:,i) * S(:,:,i) * V(:,:,i)'
.
Мудрые страницей функции как pagesvd
работайте с 2D матрицами, которые были расположены в многомерный массив. Например, с трехмерным массивом элементы в третьей размерности массива обычно называются pages, поскольку они складывают друг на друге как страницы в книге. Каждая страница является матрицей, на которой управляет функция.
Можно также собрать набор 2D матриц в более высокий размерный массив, как 4-D или 5-D массив, и в этих случаях pagesvd
все еще обрабатывает основную единицу массива как 2D матрица, на которой управляют, такие как X(:,:,i,j,k,l)
.
cat
функция полезна, чтобы собрать набор матриц в многомерный массив, и zeros
функция полезна, чтобы предварительно выделить многомерный массив.
Эта функция полностью поддерживает распределенные массивы. Для получения дополнительной информации смотрите функции MATLAB Запуска с Распределенными Массивами (Parallel Computing Toolbox).
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.