“我怎么能?”;简介;只是MATLAB中的my.m函数??

“我怎么能?”;简介;只是MATLAB中的my.m函数??,matlab,profile,Matlab,Profile,我有一个相对较大的代码,我想使用“配置文件”来改进它。当我使用“profile”时,我得到一个报告,列出了所有函数(内置函数和my.m函数)及其各自的运行时间 我只想列出我自己编写的函数(不是内置函数)及其各自的运行时间。有人知道怎么做吗 提前感谢。您是否正在查看个人资料摘要?如果是这样,那么会有一列列出每个函数(包括您自己的函数)的总时间和自我时间。我认为自我时间可能是你正在寻找的时间。此外,您还可以单击最左边一列中的函数名,查看代码中花费时间的详细信息。确保选中“显示函数列表”框并刷新以查看

我有一个相对较大的代码,我想使用“配置文件”来改进它。当我使用“profile”时,我得到一个报告,列出了所有函数(内置函数和my.m函数)及其各自的运行时间

我只想列出我自己编写的函数(不是内置函数)及其各自的运行时间。有人知道怎么做吗


提前感谢。

您是否正在查看个人资料摘要?如果是这样,那么会有一列列出每个函数(包括您自己的函数)的总时间和自我时间。我认为自我时间可能是你正在寻找的时间。此外,您还可以单击最左边一列中的函数名,查看代码中花费时间的详细信息。确保选中“显示函数列表”框并刷新以查看代码每行的计时详细信息。我希望这能有所帮助。

这里是一个尝试,使用函数的
'info'
参数。通过将Matlab函数的完整路径名与
matlabroot
进行比较,我放弃了Matlab函数。代码如下:

profile on

... % Put the code to profile here

% Stop the profiler and get infos
stats = profile('info');

% Sort results based on the total execution time
[~,I] = sort([stats.FunctionTable.TotalTime], 'descend');

for i = I

    % Get file structure
    F = stats.FunctionTable(i);

    % Discard Matlab functions
    if ~isempty(findstr(F.CompleteName, matlabroot))
        continue;
    end

    % Display the total execution time and the function name
    fprintf('%.06f sec\t', F.TotalTime);
    fprintf('%s\n', F.FunctionName);

end
尽管探查器提供了一个看起来更好的表示,但这确实完成了您开始要做的事情

NB:起初我认为我可以使用函数的输出,但只有一部分Matlab函数的核心子集被标记为“内置”。例如,
repmat
verLessThan
具有与自定义函数相同的标志,因此不被视为内置函数

最好的