Мудрое страницей сингулярное разложение
возвращает сингулярные значения каждой страницы многомерного массива. Каждая страница выхода 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.