Представляя записи в формате с 3 столбцами, или в виде списка координат (i, j, значение), вы можете просто выбрать элементы из списка.Чтобы получить это, вы можете либо использовать свой оригинальный метод для создания разреженной матрицы (то есть предшественника sparse()
), либо использовать команду find
, например: [i,j,s] = find(S);
Если вы этого не сделаетенужны записи, а кажется, что нет, вы можете просто извлечь i
и j
.
Если по какой-то причине ваша матрица массивна, а ограничения ОЗУ серьезны, вы можете просто разделить матрицу на регионы и позволить вероятности выбора данной подматрицы быть пропорциональной числуноль элементов (используя nnz
) в этой подматрице.Вы можете пойти так далеко, что разделите матрицу на отдельные столбцы, а остальная часть вычисления будет тривиальной.Примечание: применив sum
к матрице, вы можете получить количество столбцов (при условии, что ваши записи равны только 1 с).
Таким образом, вам даже не нужно беспокоиться о выборке отклонения (которая кажется бессмысленноймне в этом случае, так как Matlab знает, где находятся все ненулевые записи).