How to take number between two nested cell arrays
    8 次查看(过去 30 天)
  
       显示 更早的评论
    
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 个评论
回答(2 个)
  KSSV
      
      
 2021-7-6
        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 个评论
  Chunru
      
      
 2021-7-6
        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 个评论
  Chunru
      
      
 2021-7-6
				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)
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Cell Arrays 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


