2013-08-13 4 views
2

내 Matlab 경로에는 사용자 정의 zeros 기능이 있습니다. 변수에 내장 된 zeros 핸들을 저장하고 싶습니다. 어떻게해야합니까?오버 라이딩 된 내장 함수에 대한 핸들을 얻는 방법?

생각해 보면 @(varargin)builtin('zeros',varargin{:})인데, 문자열 비교로 인해 작업 속도가 느려질 수 있습니다.

또한, 나는 @numel\diagdiag를 참조 할 수 있다는 것을 확인할 수 있지만, 다른 내장 함수 (특히 zeros)와 함께 작동하지 않습니다.

+0

이 작업을 수행하는 목적은 무엇입니까? 커스텀 함수를 다른 것으로 부르지 말고 문제를 해결해보십시오. – MZimmerman6

+0

가능한 복제본, 정확히 동일하지는 않음 : [this] (http://stackoverflow.com/questions/11781634/how-to-wrap-an-already-existing-function-with-a-new-function-of- 같은 이름)와 [this] (http://stackoverflow.com/questions/17727141/how-to-select-a-specific-m-function-when-two-exist) –

+0

당신은 ' 문자열 비교로 인한 작업 속도 저하 '?? 그것들은'builtin'을 사용함으로써 한 걸음 더 나아가서'builtin' 자체의 함수입니다. 인수 확장은 추가 단계가 필요 없습니다. –

답변

2

음,이 질문에 당신에게 정확한 대답을하지 않지만, 문제 해결할 수 :

matlabcentral: How to call a shadowed function

Withn :이 좋은 해결책이 될 것으로 보인다 생각

을 마지막 게시물 :

그냥이 문제 우연히 다음과 같은 해결책을 발견 : 예를 들어, 내가 리튬에 의해 그림자 MATLAB svmtrain이 bsvm 도구 상자 :

-all

C svmtrain

: 프로젝트 \ \ Ichilov \ 기타 \ MVPA \ libsvm - 매트 3.0-1 \ svmtrain.mexw64

C : \ 프로그램 파일 \ MATLAB \ R2009b \ toolbox \ bioinfo \ biolearning \ svmtrain.m %가

섀도우하지만 str2func 사용하여 본래의 기능에 액세스 할 수

org_svmtrain = str2func ([matlabroot '\ 툴박스 \ bioinfo \ biolearning \ svmtrain'])

다음 단순히 전화 :

,

org_svmtrain (교육, 그룹 이름)

+0

'str2func'를 전체 경로와 함께 호출하면 '정의되지 않은 함수'오류가 발생하지만, 특히 str2func ('0')을 호출하면 트릭을 실행합니다. –

+0

@GuntherStruyf :) 이것은 custom-one을 호출하는 것일뿐입니다. o –

+0

내 특별한 경우에는 클래스의 필드가 '0'이기 때문에 내장 함수를 호출합니다. –

4

제안 #

% At the beginning of your script: rmpath('C:\the\folder\containing\the\custom\zeros'); builtInZeros = @zeros; addpath('C:\the\folder\containing\the\custom\zeros'); % Calling the custom zeros later: a = zeros(10, 20); % Calling the built-in zeros: b = builtInZeros(10, 20); 

제안 # 2

넣고 1

당신의 startup file에이 세 가지 라인 :

rmpath('C:\the\folder\containing\the\custom\zeros'); 
builtInZeros = @zeros; 
addpath('C:\the\folder\containing\the\custom\zeros'); 

제안 # 3

그것은 확실히 내장 함수의 이름을 다시 위험한 생각이다. 스크립트의 가독성이 손상되어 유지 관리가 훨씬 어려워집니다. 따라서 사용자 정의 zeros 기능을 제어 할 수있는 경우 다른 이름으로 바꿉니다. 맞춤 버전이 기본 제공 버전과 다른 방식을 나타내는 이름을 사용합니다 (예 : 더 빠른 경우 fastZeros).

+0

+1 해주시면 감사하겠습니다. –

+0

당신은 환영합니다 :) – kol

관련 문제