MATLAB Functies: Definitie, Werkruimte, In- en Outputs
Een functie is een groep statements die samen een taak uitvoeren. In MATLAB worden functies gedefinieerd in afzonderlijke bestanden. De bestandsnaam en functienaam moeten identiek zijn.
Functies werken op variabelen in hun eigen werkruimte (locale werkruimte), gescheiden van de basiswerkruimte van de command prompt.
Functies kunnen meerdere invoer- en uitvoerargumenten hebben.
Syntax van een Functie
function [out1,out2,...,outN] = myfun(in1,in2,in3,...,inN)
Voorbeeld: Functie mymax
Bestand: mymax.m
function max = mymax(n1, n2, n3, n4, n5) % Deze functie berekent het maximum van vijf getallen max = n1; if n2 > max; max = n2; end if n3 > max; max = n3; end if n4 > max; max = n4; end if n5 > max; max = n5; end end
De eerste regel begint met function. Commentaarregels direct na de functiedeclaratie vormen de helptekst.
help mymax % This function calculates the maximum of the five numbers given as input
Functie aanroepen:
mymax(34, 78, 89, 23, 11) % ans = 89
Anonieme Functies
Anonieme functies zijn inline functies gedefinieerd in één statement. Ze vereisen geen apart bestand.
f = @(arglist)expression
Voorbeeld: Machtsfunctie
power = @(x, n) x.^n; result1 = power(7, 3) % 343 result2 = power(49, 0.5) % 7 result3 = power(10, -10) % 1e-10 result4 = power(4.5, 1.5) % 9.5459
Primaire en Sub-functies
Elk functiebestand bevat een verplichte primaire functie (eerste) en optionele sub-functies. Sub-functies zijn alleen zichtbaar binnen het bestand.
Voorbeeld: Kwadratische Vergelijking met Sub-functie
Bestand: quadratic.m
function [x1,x2] = quadratic(a,b,c) % Returns roots of quadratic equation d = disc(a,b,c); x1 = (-b + d) / (2*a); x2 = (-b - d) / (2*a); end function dis = disc(a,b,c) % Sub-functie: berekent discriminant dis = sqrt(b^2 - 4*a*c); end
Aanroep: quadratic(2,4,-4) → ans = 0.7321
Geneste Functies
Functies gedefinieerd binnen een andere functie. Ze delen de werkruimte van de omvattende functie.
Voorbeeld: Geneste disc Functie
Bestand: quadratic2.m
function [x1,x2] = quadratic2(a,b,c)
function disc
d = sqrt(b^2 - 4*a*c);
end
disc;
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end
Private Functies
Private functies zijn primair functies zichtbaar alleen voor functies in de parent map. Ze staan in een submap genaamd private.
Voorbeeld
Maak map private met disc.m:
function dis = disc(a,b,c) dis = sqrt(b^2 - 4*a*c); end
Hoofdfunctie quadratic3.m in werkmap:
function [x1,x2] = quadratic3(a,b,c) d = disc(a,b,c); % roept private functie aan x1 = (-b + d) / (2*a); x2 = (-b - d) / (2*a); end
Globale Variabelen
Globale variabelen worden gedeeld tussen functies. Declareren met global in alle betrokken functies en optioneel in basiswerkruimte.
Voorbeeld
Bestand average.m:
function avg = average(nums) global TOTAL avg = sum(nums)/TOTAL; end
Script:
global TOTAL; TOTAL = 10; n = [34, 45, 25, 45, 33, 19, 40, 34, 38, 42]; av = average(n) % 35.5
MATLAB
- 10 Essentiële Insight-functies voor het optimaliseren van Stratasys FDM-printen
- C++ Functies Uitgelegd met Praktische Codevoorbeelden
- C-functies: Structuur, declaratie, aanroep en argumenten
- Verilog-functies beheersen voor efficiënt RTL-ontwerp
- MATLAB: Uitgebreid Overzicht van een Leidende Numerieke Rekenomgeving
- Variabelen in MATLAB Begrijpen: Basis en Voorbeelden
- Essentiële MATLAB Commando's voor Efficiënte Berekening
- MATLAB Datatypes: Uitgebreide Gids
- MATLAB Matrix Basis: Data Aanmaken, Benaderen en Manipuleren
- MATLAB Getallen: Typen, Opslag en Conversie
- Python lambda-functies beheersen: praktische voorbeelden & best practices