Как получить дескриптор переопределенной встроенной функции?

На моем пути Matlab есть обычай zeros функция. Я хочу сохранить ручку для встроенного zeros в переменной. Как я могу это сделать?

Думал о @(varargin)builtin('zeros',varargin{:}), но это, вероятно, замедлит работу из-за сравнения строк.

Кроме того, я заметил, что можно сослаться на diag как @numel\diag, но это не похоже на работу с другими встроенными функциями (zeros особенно).

2 ответа

Решение

Ну, это не дает вам точного ответа на ваш вопрос, но может решить проблему:

Я думаю, что это, кажется, хорошее решение:

matlabcentral: как вызвать теневую функцию

С последним постом:

Просто наткнулся на эту проблему и нашел следующее решение: Например, у меня есть пакет инструментов malab svmtrain libsvm:

какой svmtrain -все

C:\ Проекты \ Ихилов \Misc\MVPA\libsvm-мат-3.0-1 \ svmtrain.mexw64

C:\ Program Files \ MATLAB \ R2009b \ toolbox \ bioinfo \ biolearning \ svmtrain.m% Shadowed

Но я могу получить доступ к оригинальной функции с помощью str2func:

org_svmtrain = str2func ([matlabroot '\ toolbox \ bioinfo \ biolearning \ svmtrain'])

а затем просто позвонив:

org_svmtrain (обучение, имена групп)

Предложение № 1

% 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

Поместите эти три строки в ваш файл запуска:

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

Предложение № 3

Определенно опасно повторно использовать имя встроенной функции. Это ухудшает читабельность ваших скриптов, делая их намного сложнее поддерживать. Так что если у вас есть контроль над обычаем zeros функции, затем переименуйте его в другое. Используйте имя, которое описывает, как пользовательская версия отличается от встроенной (например, назовите ее fastZeros если это быстрее).

Другие вопросы по тегам