Separate numbers present within a cell on multiple rows

6 visualizaciones (últimos 30 días)
Alberto Acri
Alberto Acri el 2 de Ag. de 2023
Respondida: dpb el 2 de Ag. de 2023
Hi. I retrieved the first N numbers (largest to smallest) from the second column of the 'CountArray' array.
Now I wanted to determine the corresponding value on the first column of the 'CountArray' array by creating a column vector with these values.
I tried this way but, for example on row 22 and row 23 of cell 'matrix', there are two (equal) values because in 'values_rec' there is the same number (24).
CountArray = importdata("CountArray.mat");
N = 30;
values_rec = maxk(CountArray(:,2),N);
matrix = {};
for K = 1:height(values_rec)
[row,col] = find(CountArray(:,2) == values_rec(K));
value = CountArray(row);
matrix = [matrix;{value}];
end
matrix = cell2mat(matrix);
So I have to transform 'matrix' in this way:

Respuesta aceptada

Voss
Voss el 2 de Ag. de 2023
Editada: Voss el 2 de Ag. de 2023
Take advantage of the second output of maxk, which is a vector of indices of the maxk values.
CountArray = importdata("CountArray.mat");
N = 30;
[values_rec,idx] = maxk(CountArray(:,2),N);
matrix = CountArray(idx,1);
disp(matrix)
71 70 69 72 68 73 74 67 75 76 77 66 78 79 80 81 65 82 83 64 84 85 90 94 86 93 89 95 134 87

Más respuestas (1)

dpb
dpb el 2 de Ag. de 2023
whos -file CountArray.mat
Name Size Bytes Class Attributes CountArray 86x2 1376 double
load CountArray.mat
N = 30;
[values_rec,ix] = maxk(CountArray(:,2),N);
matrix=CountArray(ix,1);
matrix(19:30)
ans = 12×1
83 64 84 85 90 94 86 93 89 95
See maxk doc; return the optional output of the location as well and you've already got the answer.

Productos


Versión

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by