How to write this below IF condition in MATLAB

2 views (last 30 days)
Let I have dataset with 4 variable = c1, c2, c3, c4 from 3 observations. I want to make a conclusion in this 3 observation based on the "IF" condition (I wrote this IF condition in excel):
=IF(AND(C1>C2,C1>C3,C1>C4),1,IF(AND(C2>C1,C2>C3,C2>C4),2,IF(AND(C3>C1,C3>C2,C3>C4),3,4)))
c1 c2 c3 c4 conclusion
0.05000 0.77426 0.07760 0.39404 ?
0.99888 0.32245 0.00001 0.00003 ?
0.99999 0.00000 0.00110 0.00000 ?
Note: in matlab there is no c1,c2,c3,c4 but column: 1,2,3,4
Can some one help me, how to write the code of this problem in matlab? many thanks!

Accepted Answer

Image Analyst
Image Analyst on 24 Oct 2014
So what exactly do you have? I don't know if you have an array or a table. To get c1,c2,c3, and c4 from a table you do
c1 = t.c1;
c2 = t.c2;
c3 = t.c3;
c4 = t.c4;
To get c1,c2,c3, and c4 from an array you do
c1 = c(:, 1);
c2 = c(:, 2);
c3 = c(:, 3);
c4 = c(:, 4);
Then to do
IF(AND(C1>C2,C1>C3,C1>C4),1,IF(AND(C2>C1,C2>C3,C2>C4),2,IF(AND(C3>C1,C3>C2,C3>C4),3,4)))
you need to specify whether you want that done on a row by row basis , or if all elements (all rows) in something like C1>C2 need to be true. Which is it?
  3 Comments
Image Analyst
Image Analyst on 24 Oct 2014
Try this:
[rows, columns] = size(c)
result = zeros(rows, 1);
for row = 1 : rows
c1 = c(row, 1);
c2 = c(row, 2);
c3 = c(row, 3);
c4 = c(row, 4);
if c1 > c2 && c1 > c3 && c1 > c4
result(row) = 1;
elseif c2 > c1 && c2 > c3 && c2 > c4
result(row) = 2
elseif c3 > c2 && c3 > c4
result(row) = 3;
else
result(row) = 4;
end
end
It looks like you could simply use max() and take the second return argument to get all this instead of doing this 4-way if statement, right?
for row = 1 : rows
[maxValue, indexOfMax] = max(c(row, :));
result(row) = indexOfMax;
end
PsychoMath
PsychoMath on 24 Oct 2014
yes I like the way what you did at the last statement....it's works!

Sign in to comment.

More Answers (0)

Tags

No tags entered yet.

Community Treasure Hunt

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

Start Hunting!