0

長い MATLAB コード内でユーザーが作成したすべての関数とスクリプトを追跡しようとしています。次のコードはこれを行いますが、MATLAB のプロファイラーの既定の履歴サイズが 1,000,000 であるため、かなりの量の関数が不足しています。

function endProfile(p)

    profile off
    diary('Diary_endProfile')
    for k = 1:size(p.FunctionHistory, 2)

        if p.FunctionHistory(1, k) == 0
            str = 'entering function: ';
        else
            str = 'exiting function: ';
        end

        if isempty(strfind(p.FunctionTable(p.FunctionHistory(2,k)).FileName, 'C:\Program Files\MATLAB\')) &&...
           ~strcmp(p.FunctionTable(p.FunctionHistory(2, k)).FileName, '')
            disp([str p.FunctionTable(p.FunctionHistory(2, k)).FunctionName])
        end
    end

    profile off
    profile viewer

end

分析中のコードの最初のスクリプトから次のコードを使用して、プロファイラーを初期化します。

profile clear

profile on -history -historysize 1000000000

前の関数は、最初のスクリプトの最後で次のように呼び出されます。

endProfile(profile('info'))

最大履歴サイズが何であるか、および/またはサイズを増やす別の方法があるかどうかを知っている人はいますか?

ありがとう!

4

1 に答える 1

0

依存関係を調べるためのはるかに優れた方法は、depfun、またはFile Exchangeの優れたfdepを使用することです。

于 2012-09-25T13:54:29.950 に答える