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

4 Ansichten (letzte 30 Tage)
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

Akzeptierte Antwort

Nicolas Schmit
Nicolas Schmit am 5 Dez. 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 Kommentare
Kevin Zhang
Kevin Zhang am 5 Dez. 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 am 5 Dez. 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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by