Ugnezdena funkcija je funkcija, ki je ustvarjena znotraj druge funkcije v MATLAB-u. Posebnost ugnezdenih funkcij je, da lahko uporabljajo in spreminjajo spremenljivke, ki so definirane v nadrejeni funkciji.
Sintaksa
Te ugnezdene funkcije v MATLAB-u lahko zlahka dostopajo do spremenljivk nadrejene funkcije. Tukaj je sintaksa za definiranje ugnezdenih funkcij v MATLAB-u:
funkcijo starš
disp ( 'Nadrejena funkcija' )
nestedfx
funkcijo nestedfx
disp ( 'Ugnezdena funkcija' )
konec
konec
Primer kode
Spodaj smo podali kodo MATLAB ugnezdene funkcije:
funkcijo parentFunction
x = 10 ;
ugnezdenaFunkcija1 ( )
% Ugnezdena funkcija 1
funkcijo ugnezdenaFunkcija1
disp ( 'Znotraj ugnezdene funkcije1' ) ;
disp ( x ) ; % Dostop do spremenljivke x iz nadrejene funkcije
in = dvajset ;
ugnezdenaFunkcija2 ( )
% Ugnezdena funkcija 2
funkcijo ugnezdenaFunkcija2
disp ( 'Znotraj ugnezdene funkcije2' ) ;
disp ( x ) ; % Dostop do spremenljivke x iz nadrejene in ugnezdene funkcije 1
disp ( in ) ; % Dostop do spremenljivke y iz ugnezdene funkcije 1
konec
konec
konec
Zgoraj MATLAB definira glavno ime funkcije kot parentFunction , in definira dve ugnezdeni funkciji: ugnezdenaFunkcija1 in ugnezdenaFunkcija2 .
NestedFunction1 prikaže vrednost spremenljivke x iz nadrejene funkcije in definira drugo spremenljivko y. Po tem bo poklical ime funkcije nestedFunction2.
NestedFunction2 prikaže vrednost x iz nadrejene funkcije in nestedFunction1 ter vrednost y iz nestedFunction1. Po izvedbi kode bodo izhodni podatki prikazali sporočila obeh ugnezdenih funkcij, skupaj z vrednostma x in y.
Skupna raba spremenljivk iz ugnezdenih funkcij v glavno funkcijo
V MATLAB-u lahko tudi definiramo spremenljivke in jih delimo od ugnezdene do glavne funkcije.
funkcijo staršugnezdenafunc
funkcijo ugnezdenafunc
x = 10 ;
konec
x = x+ 1 ;
disp ( x ) ;
konec
Ta koda MATLAB definira funkcijo, imenovano parent, ki vsebuje ugnezdeno funkcijo, imenovano ugnezdenafunc . Koda dodeli vrednost 10 spremenljivki x v nestedfunc, nato jo poveča za 1 v nadrejeni funkciji in prikaže rezultat.
Gnezdenje več funkcij pod isto nadrejeno funkcijo
V MATLAB lahko vključimo tudi več funkcij v eno glavno nadrejeno funkcijo.
% več funkcij pod isto nadrejeno funkcijofunkcijo starš
ugnezdenafunc1
nestedfunc2
funkcijo ugnezdenafunc1
fprintf ( 'linuxhint.com\n' ) ;
konec
funkcijo nestedfunc2
fprintf ( 'Dobrodošli v Linuxhintu' ) ;
konec
konec
Ta koda MATLAB definira funkcijo, imenovano parent, ki vsebuje dve ugnezdeni funkciji: nestedfunc1 in nestedfunc2. Ko je nadrejena funkcija poklicana, izvede obe ugnezdeni funkciji. nestedfunc1 natisne sporočilo Linuxhint.com, nestedfunc2 pa sporočilo »Dobrodošli v Linuxhint«.
Skupna raba spremenljivk med ugnezdenimi funkcijami
V MATLAB-u lahko tudi definiramo in delimo spremenljivke enonadrejenih funkcij z dvema ugnezdenima funkcijama.
% dve ugnezdeni funkciji pod isto nadrejeno funkcijofunkcijo starš
x = 5
ugnezdeni1
ugnezdeno2
funkcijo ugnezdeni1
x = x* 2 ;
konec
funkcijo ugnezdeno2
x = x+ 5 ;
konec
disp ( x )
konec
Ta koda MATLAB definira funkcijo, imenovano parent, ki deklarira spremenljivko x z vrednostjo 5. Nato vsebuje dve ugnezdeni funkciji: nested1 in nested2.
V nested1 se vrednost x pomnoži z 2, a ker x ni izrecno posredovan kot argument, ustvari novo lokalno spremenljivko x znotraj nested1 namesto spreminjanja zunanje spremenljivke x.
V nested2 se vrednost x poveča za 5, kar prav tako ustvari novo lokalno spremenljivko x znotraj nested2.
Po izvedbi ugnezdenih funkcij koda prikaže vrednost zunanje spremenljivke x, ki ostane nespremenjena pri 5, ker spremembe, narejene v ugnezdenih funkcijah, vplivajo le na lokalne spremenljivke znotraj teh funkcij in ne na zunanjo spremenljivko.
Zaključek
Ugnezdene funkcije v MATLAB lahko organizirajo kodo, povečajo možnost ponovne uporabe in izboljšajo zmogljivost. Funkcijam omogočajo dostop in spreminjanje spremenljivk, definiranih v njihovih nadrejenih funkcijah, kar omogoča boljšo enkapsulacijo kode. Ugnezdene funkcije so zmanjšale potrebo po globalnih spremenljivkah ali posredovanju več argumentov med funkcijami. Ta članek pokriva različne primere ugnezdenih funkcij v MATLAB.