Как вызвать теневую функцию в Octave? - PullRequest
1 голос
/ 06 ноября 2019

Я хочу изменить поведение функции vpa. Для этого я определяю свою собственную функцию с именем vpa, которая вызывает исходную функцию vpa, а затем делает еще кое-что.

Для вызова исходной функции из моей модифицированной функции я использую

y = builtin('vpa', varargin{:});

где varargin - это, как обычно, массив ячеек входов функций.

Проблема в том, что приведенный выше результат отличается от вызова исходной функции vpa.

Минимальный пример , запуск в Октаве 4.2.2:

>> vpa([4 5], 20)
ans = (sym) [4.0  5.0]  (1x2 matrix)
>> builtin('vpa',[4 5], 20)
ans = (sym) 4.0000000000000000000

То же самое происходит с disp для символических аргументов:

>> x = sym(8);
>> disp(x)
  8
>> builtin('disp', x)
 <class sym>

Почему выход отличается? Разве builtin действительно не вызывает оригинальную функцию? Если да, то как я могу вызвать исходную функцию?


Соответствующий вопрос и ответ .

...