Count number of times value appears in column
23 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Emma Kuttler
le 22 Nov 2019
Modifié(e) : Image Analyst
le 23 Nov 2019
I have a 1000x296 matrix called FinalRanking. The possible values in each cell are between 1 and 296, integers.
I want to count the number of times each number, 1-296, appears in each column, and return this as a 296x296 matrix, lets call it counter.
so for example Counter(1,1) has the value of the number of time 1 appears in Column 1 of FinalRanking.
or Counter(12, 57) returns the value of the number of times 12 appears in Column 57 of FinalRanking.
How would I do this? I'm assuming i need nested for loops. Thanks!
0 commentaires
Réponse acceptée
the cyclist
le 22 Nov 2019
Modifié(e) : the cyclist
le 22 Nov 2019
% Parameterize the max value, for convenience
V = 296;
% Some simulated data
FinalRanking = randi(V,1000,V);
% Preallocate the counter array
counter = nan(V,V);
% Loop over the columns, and count the number of times each value appears
for nc = 1:V
counter(:,nc) = histcounts(FinalRanking(:,nc),[1:V Inf]);
end
Plus de réponses (2)
Andrei Bobrov
le 22 Nov 2019
Modifié(e) : Andrei Bobrov
le 22 Nov 2019
out = histc(FinalRanking,1:296);
4 commentaires
Andrei Bobrov
le 22 Nov 2019
"If performance is a problem due to a large number of columns in the matrix, then consider continuing to use histc for the column-wise bin counts." - wrote The Mathworks.
Image Analyst
le 22 Nov 2019
Try this:
edges = 1 : 297;
FinalRanking = randi(296, 1000, 296);
counter = zeros(296, 296);
for col = 1 : size(FinalRanking, 2)
counter(:, col) = histcounts(FinalRanking(:, col), edges);
end
imshow(counter, [], 'ColorMap', hsv(256));
axis('on', 'image');
colorbar;
impixelinfo;
2 commentaires
Image Analyst
le 23 Nov 2019
Modifié(e) : Image Analyst
le 23 Nov 2019
Yes for x. But along the y axis are the histogram bins. The value, "z" value if you want to think of it like that, is the count. But the actual distance/location along the y axis is the bin number, not the "number of occurrences" (counts).
fontSize = 20; % Whatever.
xlabel('Column', 'FontSize', fontSize);
ylabel('Number (i.e., histogram bin)', 'FontSize', fontSize);
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!