-1
Possible Duplicate:
Find location of current m-file in Matlabmatlab에 명령 창 출력 소스
사람은 어떻게 찾을 알고 않는 기능 Maltab의 명령 창에 출력을 제공하고있다? 많은 기능을 가진 코드를 작성했지만, 명령 창에 출력이 있지만 어떤 기능이 그 기능을 담당하는지 찾을 수 없습니다. 감사 !
Possible Duplicate:
Find location of current m-file in Matlabmatlab에 명령 창 출력 소스
사람은 어떻게 찾을 알고 않는 기능 Maltab의 명령 창에 출력을 제공하고있다? 많은 기능을 가진 코드를 작성했지만, 명령 창에 출력이 있지만 어떤 기능이 그 기능을 담당하는지 찾을 수 없습니다. 감사 !
모든 출력이 자신의 코드로 인쇄되는 경우 모든 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
나는 그것을 얻을 수 없었다 ... –
답장을 보내 주셔서 감사합니다! 나는 그것을 얻을 수 없었다. 나는 시도했다. 그러나 나는 다음과 같은 오류를 얻는다. ??? 최대 재귀 한계는 500에 도달했습니다. 제한을 변경하려면 set (0, 'RecursionLimit', N) 을 사용하십시오. 사용 가능한 스택 공간을 초과하면 충돌 MATLAB 및/또는 컴퓨터를 사용할 수 있습니다. ==> getfunctionname의 오류 –
글쎄,'getfunctionname'은'getstopname' 함수를 호출 한 함수의 이름을 얻기 위해'dbstack'을 사용하고 그것을 반환합니다. 실제로'mfilename'을 사용할 수도 있지만, 이전 함수의 이름을 얻으려면 어쨌든'dbstack'을 사용해야합니다. 'myprintf'는 전역 변수'PrefixOutputWithFunctionName'의 값을 검사합니다. 사실이라면'fprintf' 출력에 호출 한 함수의 이름 앞에 접두사를 붙입니다. 'mainfunction.m'은 전역 변수'PrefixOutputWithFunctionName'을 정의하고'myprintf'를 어떻게 사용하는지 간단한 예제 일뿐입니다. 'mydisp'도'disp'와 비슷합니다. – nrz