Matlab命令窗口输出源

时间:2012-06-05 00:23:43

标签: matlab command-prompt

  

可能重复:
  Find location of current m-file in Matlab

有谁知道如何找到哪个函数正在向Maltab的命令窗口提供输出?我已经编写了一个包含许多函数的代码,我已经输出到命令窗口但我找不到哪个函数负责。谢谢!

1 个答案:

答案 0 :(得分:0)

如果所有输出都是由您自己的代码打印的,您可以使用自己的函数调用轻松替换所有fprintfdisp调用,这些函数调用可选地在所有输出前面加上函数名称。

以下是代码:

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:<​​/ p>

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