有谁知道如何找到哪个函数正在向Maltab的命令窗口提供输出?我已经编写了一个包含许多函数的代码,我已经输出到命令窗口但我找不到哪个函数负责。谢谢!
答案 0 :(得分: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:</ 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