The Code Runs Too Long, Should I Abort It?

I run this code and I think it runs too long. Any solution?
c6 and c3 is matrix with 3300x2200 grids.
if true
e=0.06+c6;
f=c3;
[m,n]=size(f);
for i=1:m;
for j=1:n;
if f(i,j)>e;
t(i,j) = 1;
else
t(i,j) = 0;
end
end
end
end

 Accepted Answer

Adam
Adam on 14 Dec 2016
Edited: Adam on 14 Dec 2016
Can't you just replace the whole thing with:
t = c3 > e;
or
t = double( c3 > e );
if you want the 0s and 1s as doubles rather than logicals?
doc vectorization
gives an introduction to this very powerful alternative to nested for loops which is almost always noticeably faster too.

2 Comments

u mean like this?
if true
e=0.06+c6;
f=c3>e;
[m,n]=size(f);
for i=1:m;
for j=1:n;
if f(i,j)==1;
t(i,j) = 1;
else
t(i,j) = NaN;
end
end
end
end
No, I mean just literally replace everything after
e=0.06+c6;
with that one line:
t = c3 > e;

Sign in to comment.

More Answers (0)

Categories

Find more on Debugging and Improving Code in Help Center and File Exchange

Tags

Edited:

on 14 Dec 2016

Community Treasure Hunt

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

Start Hunting!