Próbowałem połączyć niestandardową klasę z wbudowanymi funkcjami, a ja zająłem się sytuacją, którą mogłem rozwiązać tylko przez eval, chciałbym "czystszy" sposób.Wywołanie funkcji o zmiennej liczbie wyjściowej
Zasadniczo funkcja wbudowana jest zdefiniowana jako varargout=blabla(varargin)
Zdefiniowałem funkcję overriden w klasie niestandardowej, jako varargout=blabla(varargin)
. Funkcja wygląda następująco:
function varargout=blabla(varargin)
varargout=blabla(function_of_varargin)
end
Funkcja varargin
przekształca go z klasy niestandardowej do kla wbudowanych.
Ale to nie działa tak jak jest: Zasadniczo, gdy wbudowana funkcja jest wywoływana wewnątrz funkcji przesłaniania, widzi tylko jeden parametr wyjściowy (varargout
), nawet jeśli niestandardowa nadpisywana funkcja jest wywoływana z więcej niż jednym parametrem wyjściowym .
Rozwiązałem go w zasadzie nazywając to:
[varargout{1},varargout{2},...,varargout{nargout}]=blabla(function_of_varargin)
Konstruowanie LHS z pętlą i eval-ing.
spójrz na [Jak mogę przeciążać wbudowane funkcje MATLAB?] (Http://www.mathworks.nl/support/solutions/en/data/1-18T0R/index.html?product=ML&solution= 1-18T0R) –