Создание разреженной матрицы из всех нулей, а затем ее изменение крайне неэффективно в Matlab.Вместо того, чтобы делать что-то вроде:
A = sparse(N,N) % or even A = sparse([],[],[],N,N,N)
A(1:N,7) = 1:N
Намного эффективнее построить матрицу в форме триплета.То есть сначала строят индексы столбцов и строк и ненулевые записи, а затем формируют матрицу.Например,
i = 1:N;
j = 7*ones(1,N);
x = 1:N;
A = sparse(i,j,x,N,N);