Ugniježđena funkcija je funkcija koja se stvara unutar druge funkcije u MATLAB-u. Posebna stvar kod ugniježđenih funkcija je da mogu koristiti i mijenjati varijable koje su definirane u nadređenoj funkciji.
Sintaksa
Ove ugniježđene funkcije u MATLAB-u mogu lako pristupiti varijablama nadređene funkcije. Evo sintakse za definiranje ugniježđenih funkcija u MATLAB-u:
funkcija roditelj
disp ( 'Nadređena funkcija' )
nestedfx
funkcija nestedfx
disp ( 'Ugniježđena funkcija' )
kraj
kraj
Primjer koda
U nastavku smo dali MATLAB kod ugniježđene funkcije:
funkcija parentFunction
x = 10 ;
nestedFunction1 ( )
% Ugniježđena funkcija 1
funkcija nestedFunction1
disp ( 'Inside nestedFunction1' ) ;
disp ( x ) ; % Pristup varijabli x iz nadređene funkcije
i = dvadeset ;
ugniježđenaFunkcija2 ( )
% Ugniježđena funkcija 2
funkcija ugniježđenaFunkcija2
disp ( 'Unutar ugniježđene funkcije2' ) ;
disp ( x ) ; % Pristup varijabli x iz nadređene i ugniježđene funkcije 1
disp ( i ) ; % Pristup varijabli y iz ugniježđene funkcije 1
kraj
kraj
kraj
Gore, MATLAB definira naziv glavne funkcije kao parentFunction , i definira dvije ugniježđene funkcije: nestedFunction1 i ugniježđenaFunkcija2 .
NestedFunction1 prikazuje vrijednost varijable x iz nadređene funkcije i definira drugu varijablu y. Nakon toga će pozvati funkciju pod imenom nestedFunction2.
NestedFunction2 prikazuje vrijednost x iz nadređene funkcije i nestedFunction1, kao i vrijednost y iz nestedFunction1. Nakon izvršavanja koda, izlaz će prikazati poruke iz obje ugniježđene funkcije, zajedno s vrijednostima x i y.
Dijeljenje varijabli iz ugniježđenih funkcija u glavnu funkciju
U MATLAB-u također možemo definirati varijable i dijeliti ih od ugniježđene do glavne funkcije.
funkcija roditeljugniježđenafunc
funkcija ugniježđenafunc
x = 10 ;
kraj
x = x+ 1 ;
disp ( x ) ;
kraj
Ovaj MATLAB kod definira funkciju zvanu roditelj koja sadrži ugniježđenu funkciju zvanu ugniježđenafunc . Kod dodjeljuje vrijednost 10 varijabli x u nestedfunc, zatim je povećava za 1 u nadređenoj funkciji i prikazuje rezultat.
Gniježđenje više funkcija pod istom nadređenom funkcijom
U MATLAB također možemo uključiti više funkcija unutar jedne glavne nadređene funkcije.
% više funkcija pod istom nadređenom funkcijomfunkcija roditelj
ugniježđenafunc1
nestedfunc2
funkcija ugniježđenafunc1
fprintf ( 'linuxhint.com\n' ) ;
kraj
funkcija nestedfunc2
fprintf ( 'Dobro došli u Linuxhint' ) ;
kraj
kraj
Ovaj MATLAB kod definira funkciju zvanu roditelj koja sadrži dvije ugniježđene funkcije: nestedfunc1 i nestedfunc2. Kada se roditeljska funkcija pozove, ona izvršava obje ugniježđene funkcije. nestedfunc1 ispisuje poruku Linuxhint.com, a nestedfunc2 ispisuje poruku 'Dobro došli u Linuxhint'.
Dijeljenje varijabli između ugniježđenih funkcija
U MATLAB-u također možemo definirati i dijeliti varijable jednoroditeljske funkcije s dvije ugniježđene funkcije.
% dvije ugniježđene funkcije pod istom nadređenom funkcijomfunkcija roditelj
x = 5
ugniježđeno1
ugniježđeno2
funkcija ugniježđeno1
x = x* 2 ;
kraj
funkcija ugniježđeno2
x = x+ 5 ;
kraj
disp ( x )
kraj
Ovaj MATLAB kod definira funkciju zvanu parent koja deklarira varijablu x s vrijednošću 5. Zatim sadrži dvije ugniježđene funkcije: nested1 i nested2.
U nested1, vrijednost x se množi s 2, ali budući da x nije eksplicitno proslijeđen kao argument, stvara novu lokalnu varijablu x unutar nested1 umjesto modificiranja vanjske x varijable.
U nested2, vrijednost x se povećava za 5, također stvarajući novu lokalnu varijablu x unutar nested2.
Nakon izvršavanja ugniježđenih funkcija, kod prikazuje vrijednost vanjske varijable x, koja ostaje nepromijenjena na 5 jer izmjene učinjene u ugniježđenim funkcijama utječu samo na lokalne varijable unutar tih funkcija, a ne na vanjsku varijablu.
Zaključak
Ugniježđene funkcije u MATLAB-u mogu organizirati kod, povećati mogućnost ponovne upotrebe i poboljšati performanse. Funkcijama omogućuju pristup i izmjenu varijabli definiranih u njihovim roditeljskim funkcijama, omogućujući bolju enkapsulaciju koda. Ugniježđene funkcije smanjile su potrebu za globalnim varijablama ili prosljeđivanjem višestrukih argumenata između funkcija. Ovaj članak pokriva razne primjere ugniježđenih funkcija u MATLAB-u.