Info

This question is closed. Reopen it to edit or answer.

Compare results of three cells

1 view (last 30 days)
Lucas Neves
Lucas Neves on 5 Mar 2017
Closed: MATLAB Answer Bot on 20 Aug 2021
So here it's the thing. I have three cells, each one with a data of 120 values (1x120 double) and i need to compare the 1st value of the first cell with the 1st one of the second cell and the 1st one of the third cell, then the 2nd one of the first cell with the 1st one of the second cell with the 2nd one of the third cell and so on until i compare the 120 numbers of the three cells. Any ideas? Thanks in advance! Have a good day!
  1 Comment
kowshik Thopalli
kowshik Thopalli on 5 Mar 2017
Edited: kowshik Thopalli on 5 Mar 2017
Can you expand on your 'comparing;. Are you comparing equality? or whichever is greater or smaller? or if the (value1-value2)<tolerance?

Answers (2)

kowshik Thopalli
kowshik Thopalli on 5 Mar 2017
Assuming you wish to find the maximum of the corresponding elements in each cell
cell1={rand(1,120)};
cell2={rand(1,120)};
cell3={rand(1,120)};
foo=cellfun(@max, cell,cell2,'UniformOutput',false);
final=cellfun(@max,foo,ceff3,'UniformOutput',false)
hope this helps
  2 Comments
Lucas Neves
Lucas Neves on 5 Mar 2017
Almost there mate. Let me try to make an example for you
y1=[1 %120 numbers
-1
-1
1]
y2= [-1 %120 numbers
1
-1
-1]
y3=[-1 %120 numbers
-1
1
-1]
So the final answer would be
x= [1 %The positive value indicates where the x must belong
2
3
1]
Jan
Jan on 5 Mar 2017
@Lucas: Your variables are not cells, but double vectors. This detail matters.

Jan
Jan on 5 Mar 2017
y1 = [ 1; -1; -1; 1];
y2 = [-1; 1; -1; -1];
y3 = [-1; -1; 1; -1];
[ignore, index] = max([y1, y2, y3], [], 2);
Now index contains the wanted result. If the variables are really cells:
[ignore, index] = max([y1{1}, y2{1}, y3{1}], [], 2);

This question is closed.

Community Treasure Hunt

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

Start Hunting!