MATLAB Language
functies
Zoeken…
Basis voorbeeld
Het volgende MATLAB-script laat zien hoe een basisfunctie te definiëren en aan te roepen:
myFun.m :
function [out1] = myFun(arg0, arg1)
out1 = arg0 + arg1;
end
terminal :
>> res = myFun(10, 20)
res =
30
Meerdere uitgangen
Het volgende MATLAB-script laat zien hoe u meerdere uitgangen in één functie kunt retourneren:
myFun.m :
function [out1, out2, out3] = myFun(arg0, arg1)
out1 = arg0 + arg1;
out2 = arg0 * arg1;
out3 = arg0 - arg1;
end
terminal :
>> [res1, res2, res3] = myFun(10, 20)
res1 =
30
res2 =
200
res3 =
-10
MATLAB retourneert echter alleen de eerste waarde wanneer deze is toegewezen aan een enkele variabele
>> res = myFun(10, 20)
res =
30
Het volgende voorbeeld laat zien hoe u een specifieke uitvoer krijgt
>> [~, res] = myFun(10, 20)
res =
200
smal, smal
In de hoofdtekst van een functie geven nargin
en nargout
respectievelijk het werkelijke aantal invoer en uitvoer aan dat in de oproep is geleverd.
We kunnen bijvoorbeeld de uitvoering van een functie regelen op basis van het aantal opgegeven invoer.
myVector.m :
function [res] = myVector(a, b, c)
% Roughly emulates the colon operator
switch nargin
case 1
res = [0:a];
case 2
res = [a:b];
case 3
res = [a:b:c];
otherwise
error('Wrong number of params');
end
end
terminal:
>> myVector(10)
ans =
0 1 2 3 4 5 6 7 8 9 10
>> myVector(10, 20)
ans =
10 11 12 13 14 15 16 17 18 19 20
>> myVector(10, 2, 20)
ans =
10 12 14 16 18 20
Op een vergelijkbare manier kunnen we de uitvoering van een functie regelen op basis van het aantal uitvoerparameters.
myIntegerDivision :
function [qt, rm] = myIntegerDivision(a, b)
qt = floor(a / b);
if nargout == 2
rm = rem(a, b);
end
end
terminal :
>> q = myIntegerDivision(10, 7)
q = 1
>> [q, r] = myIntegerDivision(10, 7)
q = 1
r = 3