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!


