Argomento10b Array e Matrici - di-srv.unisa.it .Matrici –5/7 Tipi di Dato Numeri interi Numeri

  • View
    214

  • Download
    0

Embed Size (px)

Text of Argomento10b Array e Matrici - di-srv.unisa.it .Matrici –5/7 Tipi di Dato Numeri...

FondamentidiInformaticaMATLAB: Array e Matr ic i

Prof. Chr i st ian Espos i toCorso d i Laurea in Ingegner ia Meccanica e Gest iona le (C lasse I )A .A . 2017/18

MATLAB:ArrayeMatrici

MATLAB:ArrayeMatrici OUTLINEOperazionisuVariabiliMatriciArrayinMATLAB IndiciArray OperazionisuArrayMatriciinMATLAB IndiciMatrici OperazionisuMatrici

MATLAB:ArrayeMatrici 02/89

OperazionisuVariabili 1/2Arrotondamento Arrotondamento per

eccessoArrotondamento per

difetto

>> x = 2.6; >> x = 2.2; >> x = 2.6;>> round(x) >> ceil(x) >> floor(x)ans = ans = ans =

3 3 2

>> x = 2.2;>> round(x) ans =

2>> x = 1.5;>> round(x) ans =

2

MATLAB:ArrayeMatrici 03/89

OperazionisuVariabili 2/2 Voglioottenereilvaloreassolutodiunavariabile,manonconoscoilnomedellafunzione,cosadevofare?

MATLAB:ArrayeMatrici 04/89

OperazionisuVariabili 2/2 Voglioottenereilvaloreassolutodiunavariabile,manonconoscoilnomedellafunzione,cosadevofare? Usareilcomandolookfor Usareilcomandohelp Usareilcomandohelpbrowser Usareilcomandodoc

Valore assoluto di un numero

>> x = -2>> abs(x)ans =

2

MATLAB:ArrayeMatrici 05/89

Matrici 1/7 Come detto nelle scorse lezioni Il nome MATLAB deriva da MATrix LABoratory

Ogni cosa in MATLAB rappresentata mediante matrici Anche le variabili viste finora sono un caso particolare di matrice, aventidimensione 1 1

MATLAB:ArrayeMatrici 06/89

Matrici 2/7 Unamatricecontieneelementinumeratiperrigaepercolonna,adesempiomijdenotalelementoallarigai ecolonnaj

MATLAB:ArrayeMatrici 07/89

Matrici 2/7

1 2 3 4

1 (1, 1) (1,2) (1,3) (1,4)

2 (2, 1) (2,2) (2,3) (2,4)

3 (3, 1) (3,2) (3,3) (3,4)

4 (4, 1) (4,2) (4,3) (4,4)

colonnerig

he

MATLAB:ArrayeMatrici 08/89

Matrici 3/7 OgnicosainMATLABrappresentatamediantematrici!

Sehannounasoladimensione(1D) Illoroaspettointuitivoquellodiunalista ounarray (vettore) Unarrayriga unamatrice1 n Unarraycolonna unamatricen 1

MATLAB:ArrayeMatrici

1234

09/89

Matrici 4/7Array Unastrutturadati unparticolaremododiorganizzareidati inuncomputer Coschetalidati possanoessereutilizzatiinmodoefficiente

Larray(ovettore)lastrutturadati principaleutilizzatadaMATLAB Dettoanchematricemonodimensionale

QuasituttocichevienecreatoinMATLAB,creatoapartiredaarray

MATLAB:ArrayeMatrici 10/89

Matrici 5/7TipidiDato

Ognivariabilehauntipo Ogni variabile pu memorizzare un valore di un certotipo di dato

Esempi a=35 amemorizzauninterosenzasegno b=-5 bmemorizzauninteroconsegno c=2.250 cmemorizzaunnumeroreale

MATLAB:ArrayeMatrici 11/89

Matrici 5/7TipidiDato InMATLABiltipodidatoprincipale proprioquelloditipoARRAY

MATLAB:ArrayeMatrici 12/89

Matrici 5/7TipidiDato

Numeriinteri

Numerireali

MATLAB:ArrayeMatrici 13/89

Matrici 6/7 OgnicosainMATLABrappresentatamediantematrici!

Sehannoduedimensioni(2D) Illoroaspettointuitivoquellodiunarettangolo(oquadrato)

MATLAB:ArrayeMatrici 14/89

Matrici 7/7 OgnicosainMATLABrappresentatamediantematrici!

Sehannotredimensioni(3D) Illoroaspettointuitivoquellodiunparallelepipedo

MATLAB:ArrayeMatrici 15/89

(1, 1,1) (1,2,1) (1,3,1) (1,4,1)

(2, 1,1) (2,2,1) (2,3,1) (2,4,1)

(3, 1,1) (3,2,1) (3,3,1) (3,4,1)

(4, 1,1) (4,2,1) (4,3,1) (4,4,1)

colonne

righe

(1, 1,3) (1,2,3) (1,3,3) (1,4,3)

(2, 1,3) (2,2,3) (2,3,3) (2,4,3)

(3, 1,3) (3,2,3) (3,3,3) (3,4,3)

(4, 1,3) (4,2,3) (4,3,3) (4,4,3)

(1, 1,2) (1,2,2) (1,3,2) (1,4,2)

(2, 1,2) (2,2,2) (2,3,2) (2,4,2)

(3, 1,2) (3,2,2) (3,3,2) (3,4,2)

(4, 1,2) (4,2,2) (4,3,2) (4,4,2)

MATLAB:ArrayeMatrici 16/89

ArrayUn array (o vettore) una collezione indicizzatadi variabili (elementi) dello stesso tipo

Esempio 1 Array di voti

Esempio 2

24 18 25 22 23 30 20

0.025 0.002 0.425 0.790

MATLAB:ArrayeMatrici 17/89

CreareunArray 1/7 Un array in MATLAB si crea scrivendo gli elementi che locompongono allinterno di una coppia di parentesiquadre Gli elementi devono essere separati da una virgola o uno spazio

Esempio 1 vet=[1,2,3,4,5] Array di nome vet composto da 5 elementi

Esempio 2 vettore=[2 -1 -1] Array di nome vettore composto da 3 elementi

Gli array qui mostrati vengono detti array riga Elementi disposti in senso orizzontale

MATLAB:ArrayeMatrici 18/89

CreareunArray 2/7 Creareunarrayrigacompostodatuttizero

Creareunarrayrigacompostodatuttiuno

Creareunarrayrigacompostodanumeripseudocasuali

>> x = zeros(1, 5)x =

0 0 0 0 0

>> x = ones(1, 6)x =

1 1 1 1 1 1

Unariga,5colonne

Unariga,6colonne

>> x = rand(1, 4)x =

0.9501 0.2311 0.6068 0.4860

Generanumeripseudocasualiuniformemente

distribuititra0e1

MATLAB:ArrayeMatrici 19/89

CreareunArray 3/7 MATLAB permette anche di creare array colonna (elementi dispostiin senso verticale). Esistono due metodi per farlo

MATLAB visualizza gli array riga orizzontalmente e gli array colonnaverticalmente

5678

RISULTATO (vettore colonna):vet =

Metodo 2 (operatore di trasposizione )vet=[5 6 7 8]

MATLAB:ArrayeMatrici

Metodo 1 (separatore ;)vet=[5;6;7;8]

20/89

CreareunArray 4/7MATLAB permette di creare nuovi array partendo da arraypreesistenti

Esempiovet1=[1 2 3];

vet2=[4 5 6];

vet3=[vet1,vet2];

vet4=[vet3, vet1];

>> disp(vet3)1 2 3 4 5 6

>> disp(vet4)1 2 3 4 5 6 1 2 3

MATLAB:ArrayeMatrici

vet3 vet1

Lafunzionedispmostrailcontenutodiunavariabile

21/89

CreareunArray 5/7 possibile creare un array di elementiregolarmente intervallati

>> x = 10:1:15

MATLAB:ArrayeMatrici 22/89

CreareunArray 5/7 possibile creare un array di elementiregolarmente intervallati

>> x = 10:1:15

RISULTATO: x = [10 11 12 13 14 15]

Iniziada10

Adincrementidi1(conintervallo1)

Sifermaquandoarrivaa15

MATLAB:ArrayeMatrici 23/89

CreareunArray 5/7 possibile creare un array di elementiregolarmente intervallati

>> x = 10:1:15 Equivalente a x=[10:1:15]

RISULTATO: x = [10 11 12 13 14 15]

Iniziada10

Adincrementidi1(conintervallo1)

Sifermaquandoarrivaa15

MATLAB:ArrayeMatrici 24/89

CreareunArray 6/7 Esempi vet1=[0:2:8] RISULTATO: vet1=[0,2,4,6,8]

vet1=[1:1:10] RISULTATO: vet1=[1,2,3,4,5,6,7,8,9,10]

OSSERVAZIONE: Se lincremento viene omesso, MATLAB lopone di default uguale a 1 Esempio 1:1:10 equivale a 1:10

MATLAB:ArrayeMatrici 25/89

CreareunArray 7/7 linspace(x1, x2, n) Crea un array riga di elementi linearmente intervallati, indicando il numerodi valori invece dellincremento (come visto precedentemente) Genera n elementi tra x1 ed x2

MATLAB:ArrayeMatrici

n elementi

x1 x2

26/89

CreareunArray 7/7 Esempio 1 x=linspace(0, 9, 10) RISULTATO: x=[0 1 2 3 4 5 6 7 8 9]

Esempio 2 x=linspace(0, 9, 3) RISULTATO: x=[0.00000 4.50000 9.00000]

MATLAB:ArrayeMatrici

0 1 92 43 5 6 7 8

0 4.5 9

10elementi

3 elementiNOTA: linspace(x1, x2) genera un array riga di 100 elementi, linearmente equidistanti tra x1 ed x2.Quindi, omettendo n, vengono generati 100 elementi

27/89

IndicizzareunArray 1/6 Come accedere ad uno specifico elementodellarray? Si utilizzano gli indici (a partire da 1)

24 18 25 22 23 30 20

1 2 3 4 5 6 7

Elementi:

Indici:

v

MATLAB:ArrayeMatrici

v(i) indica li-esimo elemento di v

28/89

IndicizzareunArray 2/6 Esempio 1 v=[4 8 5 32 16 4] v(2)

Secondo elemento dellarray v RISULTATO: elemento con valore 8 Esempio 2 v=[4 8 5 32 16 4] v(5)

Quinto elemento dellarray v RISULTATO: elemento con valore 16 anche possibile assegnare ad una variabile il valore di un elemento dellarray y = v(5)

4 8 5 32 16 4

4 8 5 32 16 4

4 8 5 32 16 4

MATLAB:ArrayeMatrici 29/89

IndicizzareunArray 3/6Manipolare un array tramite indici

Cancellare un elemento da un array1. v = [54 19 20 12 15]

2. v(2) = []

3. v = [54 20 12 15]

54 19 20 12 15

54 19 20 12 15

54 20 12 15

MATLAB:ArrayeMatrici 30/89

Manipolare un array tramite indici

Cancellare pi elementi da un array1. v = [54 19 20 12 15]

2. v(2:4) = []

3. v = [54 15]

IndicizzareunArray 3/6

MATLAB:ArrayeMatrici

54 15

54 19 20 12 15

54 19 20 12 15

31/89

IndicizzareunArray 4/6Manipolare un array tramite indici Modificare il valore di un elemento in un array1. v = [11 23 8 56 5]

2. v(4) = 77

3. v = [11 23 8 77 5]

11 23 8 56 5

11 23 8 ---56--- 5

11 23 8 77 5

11 23 8 77 5

MATLAB:ArrayeMatrici 32/89

IndicizzareunArray 5/6

v(:) Identifica tutti gli elementi dellarray v

v(2:5) Identifica tutti gli elementi di v il cui indice compreso tra 2 e 5 Elementi selezionati: v(2), v(3), v(4) e v(5)

Esempio v = [ 10 18 9 6 3 15 22 ] v(3:6) RISULTATO: 9, 3, 6, 15

MATLAB:ArrayeMatrici 33/89

IndicizzareunArray 5/6 possibile accedere a pi di un elemento dellarray allavolta

>> x = 10 : -1 : 1x =

10