How can I leave only the 10 largest elements of a matrix?
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Jae Min Lee
il 19 Set 2018
Commentato: Walter Roberson
il 19 Set 2018
I would like to make the remainder of the magnitude matrix zero except for the 10 largest values.
The code is shown below.
while hasFrame(vidReader)
Fr2 = rgb2gray(readFrame(vidReader)); % get second frame
Fr2 = im2double(Fr2);
% compute Vx, Vy by HS
[Vx, Vy] = OpticalFlow(Fr1, Fr2, alpha, N);
m = getMagnitude(Vx, Vy);
Fr1 = Fr2; % Fr2 becomes first frame of next sequence
[rows, cols] = size(m);
end
magnitude matrix = m
0 Commenti
Risposta accettata
Walter Roberson
il 19 Set 2018
Modificato: Walter Roberson
il 19 Set 2018
[vals, index] = sort(m(:), 'descend');
selected_index = index(1:10);
mt = 0 * m; %same size and type but all 0
mt(selected_index) = m(selected_index);
m = mt;
Note: you need to figure out how you want to handle ties.
3 Commenti
Steven Lord
il 19 Set 2018
mt = 0 * m; %same size and type but all 0
This is true unless m contains a nonfinite value.
I'd prefer calling maxk with two output arguments to generate vals and selected_index, filling all of m with 0, then using those maxk outputs to put the maximum values back in place.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Descriptive Statistics in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!