Info

Diese Frage ist geschlossen. Öffnen Sie sie erneut, um sie zu bearbeiten oder zu beantworten.

Compare results of three cells

1 Ansicht (letzte 30 Tage)
Lucas Neves
Lucas Neves am 5 Mär. 2017
Geschlossen: MATLAB Answer Bot am 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 Kommentar
kowshik Thopalli
kowshik Thopalli am 5 Mär. 2017
Bearbeitet: kowshik Thopalli am 5 Mär. 2017
Can you expand on your 'comparing;. Are you comparing equality? or whichever is greater or smaller? or if the (value1-value2)<tolerance?

Antworten (2)

kowshik Thopalli
kowshik Thopalli am 5 Mär. 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 Kommentare
Lucas Neves
Lucas Neves am 5 Mär. 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 am 5 Mär. 2017
@Lucas: Your variables are not cells, but double vectors. This detail matters.

Jan
Jan am 5 Mär. 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);

Community Treasure Hunt

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

Start Hunting!

Translated by