Создание разреженной распределенной или кодовой матрицы
SD = sparse(FD)
SC = sparse(m,n,codist)
SC = sparse(m,n,codist,'noCommunication')
SC = sparse(i,j,v,m,n,nzmax)
SC = sparse(i,j,v,m,n)
SC = sparse(i,j,v)
SD = sparse(FD) преобразует полный распределенный или распределенный по коду массив FD в разреженный распределенный или распределенный (соответственно) массив SD.
SC = sparse(m,n,codist) создает mоколо-n разреженный распределенный массив базового класса double, распределенный по схеме, определенной codistributor codist. Сведения о построении объектов coddistributor см. на страницах ссылок для codistributor1d и codistributor2dbc. Эта форма синтаксиса наиболее полезна внутри spmd или задания связи.
SC = sparse(m,n,codist,'noCommunication') создает mоколо-n разреженный распределенный массив способом, указанным выше, но не выполняет никакой глобальной связи для проверки ошибок при построении массива. Эта форма синтаксиса наиболее полезна внутри spmd или задания связи.
SC = sparse(i,j,v,m,n,nzmax) использует векторы i и j для указания индексов и v для указания значений элементов, для создания mоколо-n разреженная матрица, такая, что SC(i(k),j(k)) = v(k), с помещением, выделенным для nzmax ненулевые. Если какой-либо из входных векторов i, j, или v codisted, выходная разреженная матрица SC является coddistributed. Векторы i, j, и v должна быть одинаковой длины. Любые элементы v которые равны нулю, игнорируются вместе с соответствующими значениями i и j. Любые элементы v которые имеют повторяющиеся значения i и j добавляются вместе.
Чтобы упростить этот вызов из шести аргументов, можно передать скаляры для аргумента v и один из аргументов i или j, и в этом случае они расширяются таким образом, чтобы i, j, и v все имеют одинаковую длину.
SC = sparse(i,j,v,m,n) использование nzmax = max([length(i) length(j)]) .
SC = sparse(i,j,v) использование m = max(i) и n = max(j). Максимумы вычисляются до нулей в v удаляются, поэтому одна из строк [i j v] может быть [m n 0], гарантируя, что размер матрицы удовлетворяет требованиям m и n.
Примечание
Чтобы создать разреженный распределенный по коду массив логического базового класса, сначала создайте массив двойного базового класса, а затем приведите его с помощью logical функция:
spmd SC = logical(sparse(m,n,codistributor1d())); end
С четырьмя рабочими,
spmd(4) C = sparse(1000,1000,codistributor1d()) end
создает распределенный кодовый разреженный двойной массив 1000 на 1000 C. C распределяется по своему второму измерению (столбцам), и каждый рабочий содержит локальную часть 1000 на 250 C.
spmd(4) codist = codistributor1d(2,1:numlabs) C = sparse(10,10,codist); end
создает распределенный по 10 кодам разреженный двойной массив C, распространяемая своими колонками. Каждый работник содержит 10-по-labindex локальная часть C.
Преобразование распределенного массива в разреженный распределенный массив:
R = rand(1000,'distributed'); D = floor(2*R); % D also is distributed SD = sparse(D); % SD is sparse distributed
Создайте разреженный кодовый распределенный массив из векторов индексов и распределенного массива значений элементов:
r = [ 1 1 4 4 8]; c = [ 1 4 1 4 8]; v = [10 20 30 40 0]; V = distributed(v); spmd SC = sparse(r,c,V); end
В этом примере, даже если пятый элемент массива значений v равно 0, размер результата является матрицей 8 на 8 из-за соответствующих максимальных индексов в r и c. Матрица SC считается распределенным при просмотре внутри spmd блокируется и распространяется при просмотре из клиентской рабочей области. Чтобы просмотреть полную версию матрицы, full функция преобразует этот распределенный разреженный массив в полный распределенный массив:
S = full(SC)
10 0 0 20 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
30 0 0 40 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0