Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> MATLAB

MATLAB - Functies

Een functie is een groep statements die samen een taak uitvoeren. In MATLAB worden functies gedefinieerd in aparte bestanden. De naam van het bestand en van de functie moeten hetzelfde zijn.

Functies werken op variabelen binnen hun eigen werkruimte, ook wel de lokale werkruimte . genoemd , los van de werkruimte die u opent via de MATLAB-opdrachtprompt, die de basiswerkruimte wordt genoemd .

Functies kunnen meer dan één invoerargument accepteren en kunnen meer dan één uitvoerargumenten retourneren.

Syntaxis van een functie-statement is −

function [out1,out2, ..., outN] = myfun(in1,in2,in3, ..., inN)

Voorbeeld

De volgende functie genaamd mymax moet worden geschreven in een bestand met de naam mymax.m . Het neemt vijf getallen als argument en retourneert het maximum van de getallen.

Maak een functiebestand met de naam mymax.m en typ de volgende code erin −

function max = mymax(n1, n2, n3, n4, n5)

%This function calculates the maximum of the
% five numbers given as input
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

De eerste regel van een functie begint met het trefwoord function . Het geeft de naam van de functie en de volgorde van argumenten. In ons voorbeeld is de mymax functie heeft vijf invoerargumenten en één uitvoerargument.

De commentaarregels die direct na de functieverklaring komen, bieden de helptekst. Deze regels worden afgedrukt wanneer u typt −

help mymax

MATLAB zal de bovenstaande instructie uitvoeren en het volgende resultaat retourneren −

This function calculates the maximum of the
   five numbers given as input

Je kunt de functie aanroepen als −

mymax(34, 78, 89, 23, 11)

MATLAB zal de bovenstaande instructie uitvoeren en het volgende resultaat retourneren −

ans = 89

Anonieme functies

Een anonieme functie is als een inline-functie in traditionele programmeertalen, gedefinieerd in een enkele MATLAB-instructie. Het bestaat uit een enkele MATLAB-expressie en een willekeurig aantal invoer- en uitvoerargumenten.

U kunt een anonieme functie direct op de MATLAB-opdrachtregel of binnen een functie of script definiëren.

Op deze manier kunt u eenvoudige functies maken zonder dat u er een bestand voor hoeft te maken.

De syntaxis voor het maken van een anonieme functie van een uitdrukking is

f = @(arglist)expression

Voorbeeld

In dit voorbeeld schrijven we een anonieme functie met de naam macht, die twee getallen als invoer neemt en het eerste getal verheven tot de macht van het tweede getal teruggeeft.

Maak een scriptbestand en typ de volgende code erin −

Live demo
power = @(x, n) x.^n;
result1 = power(7, 3)
result2 = power(49, 0.5)
result3 = power(10, -10)
result4 = power (4.5, 1.5)

Wanneer u het bestand uitvoert, wordt −

. weergegeven
result1 =  343
result2 =  7
result3 =  1.0000e-10
result4 =  9.5459

Primaire en subfuncties

Elke andere functie dan een anonieme functie moet binnen een bestand worden gedefinieerd. Elk functiebestand bevat een vereiste primaire functie die als eerste verschijnt en een willekeurig aantal optionele subfuncties die na de primaire functie komen en erdoor worden gebruikt.

Primaire functies kunnen worden aangeroepen van buiten het bestand dat ze definieert, hetzij vanaf de opdrachtregel of vanuit andere functies, maar subfuncties kunnen niet worden aangeroepen vanaf de opdrachtregel of andere functies buiten het functiebestand.

Subfuncties zijn alleen zichtbaar voor de primaire functie en andere subfuncties in het functiebestand dat ze definieert.

Voorbeeld

Laten we een functie met de naam kwadratisch schrijven die de wortels van een kwadratische vergelijking zou berekenen. De functie zou drie ingangen nodig hebben, de kwadratische coëfficiënt, de lineaire coëfficiënt en de constante term. Het zou de wortels teruggeven.

Het functiebestand quadratic.m zal de primaire functie quadratic . bevatten en de subfunctie schijf , die de discriminant berekent.

Maak een functiebestand quadratic.m en typ de volgende code erin −

function [x1,x2] = quadratic(a,b,c)

%this function returns the roots of 
% a quadratic equation.
% It takes 3 input arguments
% which are the co-efficients of x2, x and the 
%constant term
% It returns the roots
d = disc(a,b,c); 
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end   % end of quadratic

function dis = disc(a,b,c) 
%function calculates the discriminant
dis = sqrt(b^2 - 4*a*c);
end   % end of sub-function

U kunt de bovenstaande functie vanaf de opdrachtprompt aanroepen als −

quadratic(2,4,-4)

MATLAB zal de bovenstaande instructie uitvoeren en het volgende resultaat retourneren −

ans = 0.7321

Geneste functies

U kunt functies definiëren binnen de hoofdtekst van een andere functie. Dit worden geneste functies genoemd. Een geneste functie bevat een of alle componenten van een andere functie.

Geneste functies worden gedefinieerd binnen het bereik van een andere functie en ze delen toegang tot de werkruimte van de bevattende functie.

Een geneste functie volgt de volgende syntaxis −

function x = A(p1, p2)
...
B(p2)
   function y = B(p3)
   ...
   end
...
end

Voorbeeld

Laten we de functie kwadratisch . herschrijven , uit het vorige voorbeeld, maar deze keer zal de schijffunctie een geneste functie zijn.

Maak een functiebestand quadratic2.m en typ de volgende code erin −

function [x1,x2] = quadratic2(a,b,c)
function disc  % nested function
d = sqrt(b^2 - 4*a*c);
end   % end of function disc

disc;
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end   % end of function quadratic2

U kunt de bovenstaande functie vanaf de opdrachtprompt aanroepen als −

quadratic2(2,4,-4)

MATLAB zal de bovenstaande instructie uitvoeren en het volgende resultaat retourneren −

ans =  0.73205

Privéfuncties

Een privéfunctie is een primaire functie die slechts voor een beperkte groep andere functies zichtbaar is. Als u de implementatie van een functie(s) niet openbaar wilt maken, kunt u deze als privéfuncties maken.

Privéfuncties bevinden zich in submappen met de speciale naam private .

Ze zijn alleen zichtbaar voor functies in de bovenliggende map.

Voorbeeld

Laten we de kwadratische . herschrijven functie. Deze keer echter, de schijf functie die de discriminant berekent, wordt een privéfunctie.

Maak een submap met de naam privé in de werkmap. Bewaar het volgende functiebestand disc.m erin −

function dis = disc(a,b,c) 
%function calculates the discriminant
dis = sqrt(b^2 - 4*a*c);
end      % end of sub-function

Maak een functie quadratic3.m in je werkmap en typ de volgende code erin −

function [x1,x2] = quadratic3(a,b,c)

%this function returns the roots of 
% a quadratic equation.
% It takes 3 input arguments
% which are the co-efficient of x2, x and the 
%constant term
% It returns the roots
d = disc(a,b,c); 

x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end      % end of quadratic3

U kunt de bovenstaande functie vanaf de opdrachtprompt aanroepen als −

quadratic3(2,4,-4)

MATLAB zal de bovenstaande instructie uitvoeren en het volgende resultaat retourneren −

ans =  0.73205

Globale variabelen

Globale variabelen kunnen door meer dan één functie worden gedeeld. Hiervoor moet je de variabele in alle functies als globaal declareren.

Als u toegang wilt tot die variabele vanuit de basiswerkruimte, declareer dan de variabele op de opdrachtregel.

De globale declaratie moet plaatsvinden voordat de variabele daadwerkelijk in een functie wordt gebruikt. Het is een goede gewoonte om hoofdletters te gebruiken voor de namen van globale variabelen om ze te onderscheiden van andere variabelen.

Voorbeeld

Laten we een functiebestand maken met de naam gemiddelde.m en de volgende code erin typen −

function avg = average(nums)
global TOTAL
avg = sum(nums)/TOTAL;
end

Maak een scriptbestand en typ de volgende code erin −

global TOTAL;
TOTAL = 10;
n = [34, 45, 25, 45, 33, 19, 40, 34, 38, 42];
av = average(n)

Wanneer u het bestand uitvoert, wordt het volgende resultaat weergegeven −

av =  35.500

MATLAB

  1. 10 populaire functies in Stratasys Insight
  2. C++-functies met programmavoorbeelden
  3. Python Lambda-functies met VOORBEELDEN
  4. Verilog-functies
  5. C - Functies
  6. MATLAB - Overzicht
  7. MATLAB - Variabelen
  8. MATLAB - Opdrachten
  9. MATLAB - Gegevenstypen
  10. MATLAB - Matrix
  11. MATLAB - Cijfers