How to take number between two nested cell arrays
    8 views (last 30 days)
  
       Show older comments
    
Hi, 
I have two nested cell arrays
A = {[27,28,30,31]},{[26,25,30]},{[33,29,31,27,28]};
B = {[30,64,72,85]},{[15,33,62]},{[45,62,77,84,90]};
How can I take a max value of all entry nested in A and pick a value in B which corresponds to the max value of A?
so the result will be:
C = 33
D = 45
Thank you
0 Comments
Answers (2)
  KSSV
      
      
 on 6 Jul 2021
        A = {[27,28,30,31],[26,25,30],[33,29,31,27,28]};
B = {[30,64,72,85],[15,33,62],[45,62,77,84,90]};
A = cell2mat(A) ; 
B = cell2mat(B) ;
[val,idx] = max(A) ;
iwant = B(idx)
2 Comments
  Chunru
      
      
 on 6 Jul 2021
        You can do the following (the code you gave above is NOT a nested cell):
A = {{[27,28,30,31]},{[26,25,30]},{[33,29,31,27,28]}};
B = {{[30,64,72,85]},{[15,33,62]},{[45,62,77,84,90]}};
A1= []; B1=[];
for i=1:length(A)
    A1 = [A1 A{i}{1}];
    B1 = [B1 B{i}{1}];
end
[C, id] = max(A1)
D = B1(id)
6 Comments
  Chunru
      
      
 on 6 Jul 2021
				Your data is in a mixed format.  Some elements are cells and some are arrays.  Some are row vector and some are column vector.  This cause the problem.
The following take care of these problems:
load('A', 'A');
load('B', 'B');
A1= []; B1=[];
for i=1:length(A)
    if iscell(A{i})
        A1 = [A1; A{i}{1}(:)];
        B1 = [B1; B{i}{1}(:)];
    else
        A1 = [A1; A{i}(:)];
        B1 = [B1; B{i}(:)];
    end
end
[C, id] = max(A1)
D = B1(id)
See Also
Categories
				Find more on Cell Arrays 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!

