abc Matlab - elektronski priručnik
II dio Osnove Matlaba kao jezika - 2.5. Tipovi nizova

2.5.4. Strukture

Strukture su višedimenzionalni Matlab nizovi sa elementima kojima se pristupa pomoću tekstualnih designatora polja. Na primjer,

S.name = 'Petar Petrovic';
S.score = 83;
S.grade = 'B+'
kreira skalarnu strukturu sa tri polja:

S =
name: 'Petar Petrovic'
score: 83
grade: 'B+'

Kao i sve drugo u Matlab okruženju, strukture su nizovi, tako da je moguće ubaciti dodatne elemente. U ovom slučaju, svaki element niza je struktura sa nekoliko polja. Polja se mogu dodavati jedno po jedno,

S(2).name = 'Marko Markovic';
S(2).score = 91;
S(2).grade = 'A-';

ili se čitav element može dodati jednom naredbom:

S(3) = struct('name','Janko Jankovic',...
'score',70,'grade','C')

Sada je struktura dovoljno velika da je ispisan samo rezime (engl. summary):

S =
1x3 struct array with fields:
name
score
grade

Postoji nekoliko načina za ponovno sklapanje različitih polja u druge Matlab nizove. Oni su uglavnom zasnovani na notaciji zarezom razdvojene liste (engl. comma-separated list). Ako otkucamo

S.score

to je isto kao da smo otkucali

S(1).score, S(2).score, S(3).score

što je zarezom razdvojena lista.

Ako zatvorimo izraz koji generiše takvu listu unutar uglastih zagrada, Matlab sprema svaku stavku iz liste u niz. U ovom primjeru, Matlab kreira numerički vektor-red koji sadrži polje score svakog elementa strukturnog niza S:

scores = [S.score]
scores =
83        91        70

avg_score = sum(scores)/length(scores)
avg_score =
81.3333

Da bismo kreirali niz karaktera od jednog od tekstualnih polja (name, na primjer), pozivamo char funkciju na zarezom razdvojenu listu koju je proizveo S.name:

names = char(S.name)
names =
Petar Petrovic
Marko Markovic
Janko Jankovic

Slično, možemo kreirati ćelijski niz od name polja zatvarajući izraz koji generiše listu unutar vitičastih zagrada:

names = {S.name}
names =
'Petar Petrovic'           'Marko Markovic'       'Janko Jankovic'

Da bismo dodijelili polja svakog elementa strukturnog niza posebnim varijablama izvan strukture, specificiramo svaki izlaz lijevo od znaka jednakosti, zatvarajući ih sve unutar uglastih zagrada:

[N1 N2 N3] = S.name
N1 =
Petar Petrovic
N2 =
Marko Markovic
N3 =
Janko Jankovic

Karakteri i tekst    <    Index    >    Imena dinamičkih polja