# find the index who have the max value in cell structure

3 views (last 30 days)
Commented: Voss on 30 Aug 2022
i have a cell structure like this:
ex1=[1 2 3];
ex2=[2 3 0];
for i=1:3
a(i).b=struct('ex1',ex1(i),'ex2',ex2(i));
end
how can i find the index of a(i) who have the max value of ex1 but the ex2 must be greater than 0?

Voss on 23 Aug 2022
Edited: Voss on 30 Aug 2022
ex1=[1 2 3];
ex2=[0 3 2];
for i=1:3
a(i).b = struct('ex1',ex1(i),'ex2',ex2(i));
end
temp = [a.b];
posidx = find([temp.ex2] > 0);
[maxval,tempidx] = max([temp(posidx).ex1]);
maxidx = posidx(tempidx);
disp(maxval);
3
disp(maxidx);
3
why if the ex2 start with 0 the answer of index is not the same as the max value of ex1 anymore?
for example is i change ex2 to ex2=[0 3 2] like this
ex1=[1 2 3];
ex2=[0 3 2];
for i=1:3
a(i).b = struct('ex1',ex1(i),'ex2',ex2(i));
end
temp = [a.b];
[maxval,maxidx] = max([temp([temp.ex2] > 0).ex1])
maxval = 3
maxidx = 2
the answer is maxval=3 and maxidx=2?
isn't the answer suppost to be maxval=3 and maxidx=3?
Voss on 30 Aug 2022
You're right. I've changed the answer and changed the ex2 to [0 3 2], and it now gives the expected result.

### Categories

Find more on Matrix Indexing in Help Center and File Exchange

### Community Treasure Hunt

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

Start Hunting!