How to avoid using a loop here?

1 view (last 30 days)
sznailc
sznailc on 19 Oct 2021
Answered: Star Strider on 19 Oct 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

Accepted Answer

Star Strider
Star Strider on 19 Oct 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!
.

More Answers (0)

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by