Performing calculation with multiple conditions with for loop and nested if statements

4 visualizzazioni (ultimi 30 giorni)
I have a column of data (temperatures) and want to create a second column based on these temperatures. In Excel, it is accomplished with a simple nested if statement. My loop in Matlab, however, works for a few rows, then begins to return 0's. The conditions are:
  • If temperature (T1) is < 0, then RHCrit = 0
  • If T1 is between 0 and 20, then RHCrit = -0.00267*(T1^3)+0.160*(T1^2)-3.13*T1+100
  • If T1 is >20, then RHCrit = 80
My code right now is:
RHcrit = zeros(size(T1));
for i = 1:length(T1)
if T1(i)>0
if T1(i)<20
RHcrit(i)=-0.00267*(T1(i)^3)+0.160*(T1(i)^2)-3.13*T1(i)+100
else
RHcrit(i)=80
end
else
RHcrit(i)=0
end
end

Risposta accettata

Nicolas Schmit
Nicolas Schmit il 5 Dic 2017
This code is working fine. Are your sure you loaded T1 properly? As KSSV mentioned, you do not need a for loop to do this calculation. Using logical indexing would be more efficient.
ds = datastore('T1.txt');
data = ds.readall();
T1 = data{:,1};
RHcrit = zeros(size(T1));
for i = 1:length(T1)
if T1(i)>0
if T1(i)<20
RHcrit(i)=-0.00267*(T1(i)^3)+0.160*(T1(i)^2)-3.13*T1(i)+100;
else
RHcrit(i)=80;
end
else
RHcrit(i)=0;
end
end
  3 Commenti
Kevin Zhang
Kevin Zhang il 5 Dic 2017
Okay, I think there was a bug with my original file. I copied the file retrieval portion and appended the for loop, in a new file, and it worked fine. Something was wrong with the original file I was working in.
Kevin Zhang
Kevin Zhang il 5 Dic 2017
I am an idiot. I didn't add semicolons to the statements in my for/if loops. This was what was causing all of my problems.

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by