How to take number between two nested cell arrays
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Antworten (2)
KSSV
am 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 Kommentare
Chunru
am 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 Kommentare
Chunru
am 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)
Siehe auch
Kategorien
Mehr zu Cell Arrays finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!