Я хочу изменить поведение функции 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
действительно не вызывает оригинальную функцию? Если да, то как я могу вызвать исходную функцию?
Соответствующий вопрос и ответ .