Automatyczne generowanie diagramu wywołań funkcji w MATLAB [zamknięty]
chcesz poprawić to pytanie? Update the pytanie więc to on-topic {[3] } dla przepełnienia stosu.
Zamknięte 6 lat temu .
Popraw to pytanieKtoś zna narzędzie, które może być użyte do automatycznego budowania diagramów wywołań funkcji w Matlabie?
Np. dla danej funkcji narzędzie będzie rekurencyjnie poprzez wywołania funkcji i zbudowanie wykresu 2D, gdzie węzły reprezentowałyby funkcje, a kierowane krawędzie łączyłyby funkcje wywołujące z wywołanymi funkcjami.
Najlepiej byłoby, gdyby narzędzie pozwalało użytkownikowi włączać i wyłączać filtry, aby zawierały tylko funkcje zdefiniowane przez użytkownika, ograniczały głębokość rekursji itp.
Uważam, że Doxygen zapewnia podobną funkcjonalność dla bardziej tradycyjnych OOP języków, ale zastanawiałem się, czy coś takiego istnieje już dla MATLAB.
Dzięki!1 answers
Możesz użyć technik z innych odpowiedzi przywołanych w komentarzu gnovica, aby uzyskać listę zależności funkcji jako pary (A,B), gdzie a wywołuje B. następnie zainstaluj GraphViz i użyj go do generowania diagramów. Możesz stworzyć .pliki dot z Matlab z czymś takim.
function createFunctionDependencyDotFile(calls)
%CREATEFUNCTIONDEPENDENCYDOTFILE Create a GraphViz DOT diagram file from function call list
%
% Calls (cellstr) is an n-by-2 cell array in format {caller,callee;...}.
%
% Example:
% calls = { 'foo','X'; 'bar','Y'; 'foo','Z'; 'foo','bar'; 'bar','bar'};
% createFunctionDependencyDotFile(calls)
baseName = 'functionCalls';
dotFile = [baseName '.dot'];
fid = fopen(dotFile, 'w');
fprintf(fid, 'digraph G {\n');
for i = 1:size(calls,1)
[parent,child] = calls{i,:};
fprintf(fid, ' "%s" -> "%s"\n', parent, child);
end
fprintf(fid, '}\n');
fclose(fid);
% Render to image
imageFile = [baseName '.png'];
% Assumes the GraphViz bin dir is on the path; if not, use full path to dot.exe
cmd = sprintf('dot -Tpng -Gsize="2,2" "%s" -o"%s"', dotFile, imageFile);
system(cmd);
fprintf('Wrote to %s\n', imageFile);
GraphViz działa świetnie dla wielu innych aplikacji drzew i wykresów, takich jak dziedziczenie klas i drzewa zależności, przepływ danych i tak dalej.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-01 22:15:04