sparse

Создайте разреженную распределенную или кодовую матрицу

Синтаксис

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
Введенный в R2006b