-1

重複の可能性:
Matlab で現在の m ファイルの場所を検索する

Maltabのコマンドウィンドウに出力を提供している関数を見つける方法を知っている人はいますか? 多くの関数を含むコードを作成しました。コマンド ウィンドウに出力しましたが、その原因となっている関数が見つかりません。ありがとう !

4

1 に答える 1

0

すべての出力が独自のコードによって出力される場合、すべてのfprintfおよびdisp呼び出しを独自の関数呼び出しに簡単に置き換えることができます。オプションで、すべての出力の前に関数名を付けることができます。

コードは次のとおりです。

getfunctionname.m:

function [CurrentFunctionName, PreviousFunctionName] = getfunctionname()
CurrentFunctionName = '';
PreviousFunctionName = '';
MyStack = dbstack('-completenames');
if (length(MyStack) < 2)
    error('Function getfunctionname.m cannot be called from MATLAB console.');
elseif (length(MyStack) == 2)
    CurrentFunctionName = MyStack(2).name;
else
    CurrentFunctionName = MyStack(2).name;
    PreviousFunctionName = MyStack(3).name;
end
return

myprintf.m:

function myprintf(varargin)
global PrefixOutputWithFunctionName
if (PrefixOutputWithFunctionName)
    [~, PreviousFunctionName] = getfunctionname;
    fprintf('### %s.m:\n', PreviousFunctionName);
end
disp(sprintf(varargin{:}));
return

mydisp.m:

function mydisp(varargin)
global PrefixOutputWithFunctionName
if (PrefixOutputWithFunctionName)
    [~, PreviousFunctionName] = getfunctionname;
    fprintf('### %s.m:\n', PreviousFunctionName);
end
disp(varargin{:});
return

mainfunction.m:

function mainfunction()
global PrefixOutputWithFunctionName

% set PrefixOutputWithFunctionName to false to disable prefixing.
PrefixOutputWithFunctionName = true;

% the code goes here...

% example output.
myprintf('some text...\n some more text...');
return
于 2012-06-05T02:43:43.097 に答える