Es gibt Situationen, in denen man die Zahl der Ein- oder Ausgabe-Parameter variabel haben will. Nehmen wir an, wir wollen die direkte Summe einer unbestimmten Anzahl von Matrizen bilden:
function C = dirsum2(A,B) %DIRSUM2 Direct sum of two matrices. % % C = dirsum (A,B): C = [A 0] % [0 B] % Peter Arbenz, Sep 8, 1989. [n,m] = size(A); [o,p] = size(B); C = [A zeros(n,p); zeros(o,m) B];Das Benützen einer variable Anzahl von Argumenten unterstützt MATLAB durch die Funktionen varargin und varargout an. Diese kann man sich als eindimensionale Arrays vorstellen, deren Elemente die Eingabe-/Ausgabeargumente sind. In MATLAB werden diese Arrays, deren Elemente verschiedene Typen haben können cell arrays genannt, siehe Abschnitt 2.13. Hier müssen wir nur wissen, dass die Elemente eines cell arrays mit geschweiften statt mit runden Klammern ausgewählt werden. Die Lösung unseres kleinen Problems könnte somit so aussehen.
function A = dirsum(A,varargin) %DIRSUM Direct sum of matrices % C = dirsum(A1,A2,...,An) % Peter Arbenz, May 30, 1997. for k=1:length(varargin) [n,m] = size(A); [o,p] = size(varargin{k}); A = [A zeros(n,p); zeros(o,m) varargin{k}]; endHier wird das erste Argument als A bezeichnet, alle weiteren werden mit der Funktion varargin behandelt.
>> a=[1 2 3]; b=ones(3,2); >> dirsum(a,b,17) ans = 1 2 3 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 17