vectorization
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
hi,
is there a quick way to change the values of the diagonal of a matrix, instead of
for i = 1:length(A)
A(i,i) = 0;
end
thx
Réponse acceptée
Dr. Seis
le 8 Déc 2011
If A is an NxN matrix:
A(1:N+1:N*N) = 0;
1 commentaire
Dr. Seis
le 8 Déc 2011
N = 10000;
A = rand(N);
tic
A(1:N+1:N*N)=0;
toc % Took 0.000532 seconds
A = rand(N);
tic
A(logical(speye(length(A)))) = 0;
toc % Took 0.001379 seconds
A = rand(N);
tic
A = A - diag(diag(A));
toc % Took 0.215796 seconds
Plus de réponses (1)
Sean de Wolski
le 8 Déc 2011
One way:
A = magic(100); %sample matrix
A(logical(speye(length(A)))) = 0;
Also diag if you're building a matrix
0 commentaires
Voir également
Catégories
En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!