Documente Academic
Documente Profesional
Documente Cultură
CURS 8
TABLOURI MULTIDIMENSIONALE
MATLAB-ul permite utilizarea tablourilor cu mai mult de 2 indici. Ele pot fi create și apelând funcțiile
specifice matricelor (zeros, ones, rand, randn etc.) cu mai mult de două argumente de intrare.
Exemplul 1: Crearea unui tablou cu dimensiunea 3 × 4 × 5 (60 de elemente), având toate
elementele egale cu 1.
U=ones(3,4,5)
U(:,:,1) =
1 1 1 1
1 1 1 1
1 1 1 1
U(:,:,2) =
1 1 1 1
1 1 1 1
1 1 1 1
U(:,:,3) =
1 1 1 1
1 1 1 1
1 1 1 1
U(:,:,4) =
1 1 1 1
1 1 1 1
1 1 1 1
U(:,:,5) =
1 1 1 1
1 1 1 1
1 1 1 1
Informatica aplicată 2 - MATLAB 2
B(:,:,1) =
3 2 1
6 5 4
9 8 7
B(:,:,2) =
3 1 2
6 4 5
9 7 8
B(:,:,3) =
2 3 1
5 6 4
8 9 7
Informatica aplicată 2 - MATLAB 3
B(:,:,4) =
2 1 3
5 4 6
8 7 9
B(:,:,5) =
1 2 3
4 5 6
7 8 9
B(:,:,6) =
1 3 2
4 6 5
7 9 8
Referirea unui element individual al tabloului B se face prin 3 indici reprezentând dimensiunile 1,
2 și 3:
B(2,3,3) %linia 2, coloana 3, matricea 3
ans =
4
A 5-a matrice:
B(:,:,5)
ans =
1 2 3
4 5 6
7 8 9
Informatica aplicată 2 - MATLAB 4
ȘIRURI DE CARACTERE
Caracterele ASCII imprimabile au codurile 32:127. Valorile mai mici decât 32 sunt coduri de
caractere de control neimprimabile.
Concatenarea șirurilor de caractere se realizează prin încadrarea lor între paranteze pătrate [].
Instrucțiunea următoare concatenează șirurile pe orizontală (se folosesc parantezele []):
d=['Forta∙','de∙','reactiune'] %sau d=['Forta∙' 'de∙' 'reactiune']
d =
Forta de reactiune
Pentru a putea trata un text format din linii cu lungimi diferite, există trei posibilități:
1. Completarea cu blancuri: instrucțiunea următoare concatenează șirurile pe verticală:
e=['Forta∙∙∙∙';'de∙∙∙∙∙∙∙';'reactiune']
e =
Forta∙∙∙∙
de∙∙∙∙∙∙∙
reactiune
TABLOURI DE CELULE
Un tablou de celule în MATLAB este un tablou multidimensional ale cărui elemente sunt copii ale
altor tablouri. Crearea unui tablou de celule și indexarea elementelor se realizează folosind acolade
{} în loc de paranteze [], respectiv ().
Un tablou de celule poate conține elemente de diverse tipuri (scalari, vectori, matrice, șiruri de
caractere (string-uri)).
Exemplu: Tablou de celule unidimensional 1 × 3:
A=ones(4); %matrice 4 × 4
C={A,A(:,2),A(2,3)} %A(:,2) este un vector coloana, A(2,3) este un scalar
C =
[4x4 double] [4x1 double] [1]
produce un tablou de celule 1 × 3. Cele trei celule conțin o matrice, un vector coloană și un scalar.
Afișarea de tipul [4x4 double] [4x1 double] [1] se datorează lipsei de spațiu; ori de
câte ori apare această situație MATLAB dă un sumar al structurilor și componentelor.
Trebuie reținute două aspecte importante:
➢ utilizarea acoladelor în cazul indexurilor:
C{1} %se cere elementul 1 al structurii, adica matricea A
ans =
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
➢ Celulele conțin copii ale tablourilor, nu pointeri pe tablouri. Astfel, dacă se modifică matricea
A, tabloul C nu se modifică.
STRUCTURI
1. Crearea structurilor
Structurile sunt tablouri de celule multidimensionale (eterogene), ale căror elemente pot fi
desemnate prin nume de câmpuri.
Exemplu: structură care conține informații despre produsele dintr-o magazie: denumire, furnizor, preț
și numărul de bucăți
MAG(1).denumire='surub cap hexagonal M8';
MAG(1).furnizor='S.C. SERV S.R.L.';
MAG(1).pret=0.2;
MAG(1).bucati=214;
creează o structură numită MAG, cu patru câmpuri: denumire, furnizor, pret, bucati
MAG
MAG =
struct with fields:
denumire: 'surub cap hexagonal M8'
furnizor: 'S.C. SERV S.R.L.'
pret: 0.2000
bucati: 214
Informatica aplicată 2 - MATLAB 8
Structurile sunt tablouri care permit inserarea unor elemente adiționale prin două metode:
a) câmpurile pot fi adăugate unul câte unul
MAG(2).denumire='surub cap hexagonal M10';
MAG(2).furnizor='S.C. SERV S.R.L.';
MAG(2).pret=0.22;
MAG(2).bucati=143;
Deoarece structura a devenit destul de mare, la apelare se va afișa numai un sumar al ei:
MAG
MAG =
1x3 struct array with fields:
denumire
furnizor
pret
bucati
2. Interogarea structurilor
Există mai multe moduri de a interoga structurile:
a) Dacă se tastează
MAG.pret
ans =
0.2000
ans =
0.2200
ans =
0.1000
MAG(2).pret
ans =
0.2200
Informatica aplicată 2 - MATLAB 9
MAG(3).pret
ans =
0.1000
Forma aceasta nu este foarte utilă, deoarece ia separat fiecare pret, îl atribuie variabilei
implicite ans și afișează rezultatul fiecărei atribuiri.
b) Dacă se încadrează între paranteze pătrate [] devine un vector linie
[MAG.pret]
ans =
0.2000 0.2200 0.1000
d) Utilizarea funcției de concatenare cat care este utilă pentru crearea și gestionarea tablourilor
și structurilor de date avansate
C=cat(dim,A1,A2,A3,A4,...)
5 6
7 8
se pot utiliza pentru a concatena un tablou de structuri care conține câmpuri numerice într-o singură
matrice.
Exemplu:
cat(3,MAG.pret) %produce un tablou tridimensional 1 × 1 × 3
ans(:,:,1) =
0.2000
ans(:,:,2) =
0.2200
ans(:,:,3) =
0.1000
Bibliografie
1. ***, Fundamente de Matlab, telecom.etti.tuiasi.ro/
2. Iulian Lupea, Curs Matlab
3. Nicoleta Breaz ș.a., Modelarea matematică prin Matlab
4. ***, MATLAB User’s Guide, The Mathworks Inc., SUA