How to look at the source code for MATLAB's built-in sort function?
233 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Joe
el 1 de Mayo de 2013
Comentada: Walter Roberson
el 30 de Sept. de 2020
I need to find the big O runtime for MATLAB's built-in sort function, but I'm not quite sure how to if I don't even know how the function is coded. Is there some way to look at the code for the function because I know for some built-in functions you are able to look at the source code.
0 comentarios
Respuesta aceptada
Jonathan Epperl
el 1 de Mayo de 2013
If the source code is available, then
edit sort
will do the job. I can't check right now, but you go ahead and try that.
0 comentarios
Más respuestas (3)
Walter Roberson
el 1 de Mayo de 2013
Editada: Walter Roberson
el 1 de Mayo de 2013
To look at the source code, get a job or internship with Mathworks.
sort() is a built-in; you cannot "edit sort" to look at it.
There are a number of routines for which MATLAB calls into LAPACK or BLAS when the arrays are large enough to make it worth the overhead. I do not know if sort() is one of those. If it is, then the LAPACK sort algorithm is at http://www.netlib.org/lapack/explore-html/de/de5/slasrt_8f_source.html
I have doubts about that being the appropriate routine, as it appears to only support a single data-type.
0 comentarios
Muhammad Ahsan Zahid
el 14 de Abr. de 2020
Editada: Muhammad Ahsan Zahid
el 14 de Abr. de 2020
If you want to see the sourcee code behind the function, open the function as:
open function_name.m
Example
open rand.m
If available it will show you.
3 comentarios
Walter Roberson
el 30 de Sept. de 2020
built-in (/Applications/MATLAB_R2020a.app/toolbox/matlab/datafun/@double/sort) % double method
edit sort will show you only documentation, unless you specifically open, for example, toolbox/matlab/datatypes/categorical/@categorical/sort.m .
But even that one does its work by using categoricalsort which is matlab.internal.categoricalUtils.categoricalsort.categoricalsort which is a build-in method.
Chien-Han Su
el 21 de Dic. de 2019
I'm not sure whether this is what you need, I would recommend you to record (by tic and toc) and analyze the exceution time to find the Big-O since you can't not get the source code of built-in function, like this
iterStart = 10; % drop the first ten iterate
iterNum = 1000;
N = 1000;
t = zeros(iterNum,N);
for m = iterStart:iterNum
for n = 1:N
a = rand(1,n);
tic;
b = sort(a);
t(m,n) = toc;
end
end
tAvg = mean(t,1);
tAvg = tAvg/tAvg(1); % normalize
plot(1:N,tAvg)
xlabel('n');
ylabel('Normalized Time')
title('Normalized Execution Time for Sorting a Vector');
and you will get
0 comentarios
Ver también
Categorías
Más información sobre Shifting and Sorting Matrices 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!