mink and maxk functions
    6 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    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
      
      
 el 5 de Feb. de 2018
				"These two functions were introduced in R2017b. Is it possible to use these functions with R2017a?"
No.
Respuesta aceptada
  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
      
      
 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] .
Más respuestas (1)
  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
Ver también
Categorías
				Más información sobre Descriptive Statistics en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!