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}];
end
Hier 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