How to improve the speed of of this function?

2 次查看(过去 30 天)
Good Morning, I am looking for some advice regarding improving the efficiency of my code. I have a simple loop I am running but it is the first time I am running it on the entirety of my data set and I now realize how slow my loop is. I am wondering if anyone might have some advice for improving the speed.
TRIAL1A_SPACE1 = zeros(size(T1A_raw_TEMP))
[r, c] = size(TRIAL1A_SPACE1)
for e = 1:r
for f = 1:c
if T1A_raw_TEMP(e,f) >= 8 && T1A_raw_HUM(e,f) >= 11
TRIAL1A_SPACE1(e,f) = 1
end
end
end
The [r,c] = [7824,183].
Thank you for any help or advice!

回答(2 个)

Ingrid
Ingrid 2016-2-15
you do not need a loop for this, you can just use
TRIAL1A_SPACE1 = zeros(size(T1A_raw_TEMP));
TRIAL1A_SPACE1(T1A_raw_TEMP >= 8 && T1A_raw_HUM >= 11 ) = 1;
  1 个评论
Chameleon17
Chameleon17 2016-2-15
Hi, thanks very much for your quick response.
I have tried using it without a loop but I get the error Operands to the and && operators must be convertible to logical scalar values.
I found another thread http://uk.mathworks.com/matlabcentral/newsreader/view_thread/169749 which seems to suggest the only way around this is a loop?

请先登录,再进行评论。


Jos (10584)
Jos (10584) 2016-2-15
The command
TRIAL1A_SPACE1 = T1A_raw_TEMP >= 8 & T1A_raw_HUM >= 11
will make create the required (logical) matrix.
  2 个评论
Chameleon17
Chameleon17 2016-2-15
Thank you very much for that! It worked!
I have another follow up question though, trying to get around loops that will take a very long time to execute.
TRIAL1A_SPACE3 = zeros(size(TRIAL1A_SPACE1)) [s, d] = size(TRIAL1A_SPACE3)
for g = 1:s for h = 1:d-1 if TRIAL1A_SPACE1(g,h) == 1 && TRIAL1A_SPACE1(g, h+1) == 1 TRIAL1A_SPACE3(g,h+1) = 1 end end end
is there a simpler way to complete the above, without looping, but I want to score for when an even has occurred for two consecutive days.
Jos (10584)
Jos (10584) 2016-2-16
g = 1:s
h = 1:d-1
TRIAL1A_SPACE3(g,h+1) = TRIAL1A_SPACE1(g,h) == 1 & TRIAL1A_SPACE1(g, h+1) == 1

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by