How to look at the source code for MATLAB's built-in sort function?
조회 수: 39 (최근 30일)
이전 댓글 표시
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
채택된 답변
Jonathan Epperl
2013년 5월 1일
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
추가 답변 (3개)
Walter Roberson
2013년 5월 1일
편집: Walter Roberson
2013년 5월 1일
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
Muhammad Ahsan Zahid
2020년 4월 14일
편집: Muhammad Ahsan Zahid
2020년 4월 14일
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
Walter Roberson
2020년 9월 30일
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
2019년 12월 21일
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
참고 항목
카테고리
Help Center 및 File Exchange에서 Shifting and Sorting Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!