Создайте разреженную распределенную или кодовую матрицу
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
-by- n
разреженный кодовый массив базового класса double, распределенный согласно схеме, заданной кодистрибутором codist
. Для получения информации о построении объектов codistributor смотрите страницы с описанием для codistributor1d
и codistributor2dbc
. Эта форма синтаксиса наиболее полезна внутри spmd
или связывающееся задание.
SC = sparse(m,n,codist,'noCommunication')
создает m
-by- n
разреженный кодовый массив указанным выше способом, но не выполняет никакой глобальной связи для проверки ошибок при построении массива. Эта форма синтаксиса наиболее полезна внутри spmd
или связывающееся задание.
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
кодифицируется, выход разреженная матрица SC
Кодифицируется. Векторы 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
.
Примечание
Чтобы создать разреженный распространенный кодом массив базовых классов логический, сначала создайте массив базовых классов double, а затем приведите его с помощью 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 на 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