How to avoid using a loop here?

5 visualizzazioni (ultimi 30 giorni)
sznailc
sznailc il 19 Ott 2021
Risposto: Star Strider il 19 Ott 2021
Hello. I want to do the same thing without a loop.
A = zeros(N);
for m = 1:N
for n = 1:N
A(m, n) = 2*N + 1 - (m + n);
end
end

Risposta accettata

Star Strider
Star Strider il 19 Ott 2021
One approach —
N = 5;
tic
[m,n] = ndgrid(1:N);
A = 2*N + 1 - (m + n)
A = 5×5
9 8 7 6 5 8 7 6 5 4 7 6 5 4 3 6 5 4 3 2 5 4 3 2 1
toc
Elapsed time is 0.047132 seconds.
Compare —
tic
A = zeros(N);
for m = 1:N
for n = 1:N
A(m, n) = 2*N + 1 - (m + n);
end
end
toc
Elapsed time is 0.003632 seconds.
A
A = 5×5
9 8 7 6 5 8 7 6 5 4 7 6 5 4 3 6 5 4 3 2 5 4 3 2 1
The nested loops are actually faster!
.

Più risposte (0)

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Prodotti


Release

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by