Создайте разреженную распределенную или codistributed матрицу
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)
преобразовывает полный распределенный или codistributed массив FD
в распределенное разреженное или codistributed (соответственно) массив SD
.
SC = sparse(m,n,codist)
создает m
-by-n
разреженный codistributed массив базового класса дважды, распределенный согласно схеме, заданной codistributor codist
. Для получения информации о построении codistributor объекты, смотрите страницы с описанием для codistributor1d
и codistributor2dbc
. Эта форма синтаксиса является самой полезной в spmd
, pmode, или связывающемся задании.
SC = sparse(m,n,codist,'noCommunication')
создает m
-by-n
разреженный codistributed массив, таким образом заданный выше, но не выполняет глобальной связи для проверки ошибок при построении массива. Эта форма синтаксиса является самой полезной в spmd
, pmode, или связывающемся задании.
SC = sparse(i,j,v,m,n,nzmax)
векторы использования i
и j
, чтобы задать индексы и v
, чтобы задать значения элемента, для генерации m
-by-n
разреженная матрица, таким образом, что SC(i(k),j(k)) = v(k)
, с местом, выделенным для ненулей nzmax
. Если какой-либо из входных векторов, i
, j
или v
являются codistributed, выходная разреженная матрица SC
, является codistributed. Векторы 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
.
Чтобы создать разреженный codistributed массив базового логического класса, сначала создайте массив базового класса дважды и затем бросьте его с помощью функции logical
:
spmd SC = logical(sparse(m,n,codistributor1d())); end
С четырьмя рабочими,
spmd(4) C = sparse(1000,1000,codistributor1d()) end
создает codistributed разреженный двойной массив 1000 на 1000 C
. C
распределяется его вторым измерением (столбцы), и каждый рабочий содержит 1000 250 локальную часть C
.
spmd(4) codist = codistributor1d(2,1:numlabs) C = sparse(10,10,codist); end
создает 10 10 codistributed разреженный двойной массив C
, распределенный его столбцами. Каждый рабочий содержит 10 labindex
локальной частью C
.
Преобразуйте распределенный массив в разреженный распределенный массив:
R = rand(1000,'distributed'); D = floor(2*R); % D also is distributed SD = sparse(D); % SD is sparse distributed
Создайте разреженный codistributed массив из векторов индексов и распределенный массив значений элемента:
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
рассматривается codistributed, когда просматривается в блоке 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