mink and maxk functions

30 visualizaciones (últimos 30 días)
UET Hussain
UET Hussain el 5 de Feb. de 2018
Comentada: UET Hussain el 5 de Sept. de 2018
I'm using MATLAB R2017a. While trying to use "mink" and "maxk" functions, the MATLAB responds "Undefined function or variable 'maxk'." These two functions were introduced in R2017b. Is it possible to use these functions with R2017a? if yes, then how?
  1 comentario
Stephen23
Stephen23 el 5 de Feb. de 2018
"These two functions were introduced in R2017b. Is it possible to use these functions with R2017a?"
No.

Iniciar sesión para comentar.

Respuesta aceptada

Birdman
Birdman el 5 de Feb. de 2018
One approach would be writing your own function:
function y=mink(A,k)
A=sort(unique(A));
y=A(1:k);
end
Call this function from command line as follows
A=1:10;
mink(A,3)
and the first three smallest elements will be displayed.
  7 comentarios
Jan
Jan el 5 de Feb. de 2018
mink does not reply unique elements. Therefore the correct replacement is:
function y = mink(A, k)
A = sort(A); % No UNIQUE here
y = A(1:k);
end
See: mink([1,1,2,3], 2) replies [1,1,2] .
Birdman
Birdman el 5 de Feb. de 2018
Mine approach was different, but anyway thanks Jan :)

Iniciar sesión para comentar.

Más respuestas (1)

Salam Ismaeel
Salam Ismaeel el 4 de Sept. de 2018
Editada: Salam Ismaeel el 4 de Sept. de 2018
% function [B BIndex RestVector]= maxk2(A, k)
% Find k largest elements in a Vector A
% B : Vector with all max elements (included repeated)
% BIndex : idx of max k element
% RestVector : rest of the elements without max k elements
function [B BIndex RestVector]= maxk2(A, k)
B = 0;
RestVector = A;
sumIndex = 1;
for i=1:k
MaxA = max(A);
I = A == MaxA;
sumI = sum(I); %To find number of Max elements (repeated)
B(sumIndex: sumIndex+sumI-1) = MaxA; % to same max elements in B
BIndex(sumIndex: sumIndex+sumI-1) = find(A == MaxA);
sumIndex = sumIndex + sumI;
A(I) = min(A); % exchange the max elements by a smallest value
end
RestVector(BIndex) = []; % remove largest values
------------------------------ Example ------------------
>> x
x =
4 17 65 73 65 45 55 30 74 19
>> [x1 x1idx x1new ] = maxk2(x,4)
x1 =
74 73 65 65 55
x1idx =
9 4 3 5 7
x1new =
4 17
  1 comentario
UET Hussain
UET Hussain el 5 de Sept. de 2018
Sir Sir Sir, slightly difficult approach. but its giving all required things. thanks for response.

Iniciar sesión para comentar.

Categorías

Más información sobre Descriptive Statistics en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by