FONDAMENTI DI INFORMATICA. Prof. Alfredo Accattatis Slide (rielaborate) del prof. Emiliano Casalicchio

Documenti analoghi
FONDAMENTI DI INFORMATICA. Prof. Alfredo Accattatis ( ) Tutor: prof. Venturino Taggi (

FONDAMENTI DI INFORMATICA

Complementi di Matematica e Calcolo Numerico A.A Laboratorio

Fondamenti di Informatica e Programmazione

8 Introduzione MATLAB

FONDAMENTI DI INFORMATICA. Prof. Alfredo Accattatis Tutor: prof. Venturino Taggi

8 Introduzione MATLAB

Fondamenti di Informatica

Introduzione al MATLAB c Parte 1 Variabili ed array


Introduzione al MATLAB c Parte 1 Variabili ed array

Introduzione a MATLAB

MATLAB c Utilizzo di Matlab. Operazioni fondamentali. Elementi di grafica.

Strutture di controllo condizionali in Matlab

FONDAMENTI DI INFORMATICA


Complementi di Matematica e Calcolo Numerico A.A Laboratorio 1 - Introduzione a MATLAB

MATLAB parte II. Array

Laboratorio di Matematica Computazionale A.A Lab. 1 - Introduzione a Matlab

Laboratorio di Calcolo Numerico Laboratorio 8: Vettori e Matrici

INTRODUZIONE A MATLAB

fprintf('avete speso %d (media %f)', somma, media);

Introduzione a MATLAB

Calcolo Numerico I - a.a Laboratorio 1 - Introduzione a MATLAB

8 Introduzione MATLAB

FONDAMENTI DI INFORMATICA

Scilab. Introduzione a Scilab - Vettori. Corso di Informatica CdL: Chimica. Claudia d'amato.

v indx v t v indx. v >0 v

Introduzione a MATLAB

Università degli Studi di Napoli Federico II CdL Ing. Elettrica Corso di Laboratorio di Circuiti Elettrici

Introduzione a Matlab

19 FEBBRAIO 2009 PRIMA PARTE

Metodi di Analisi dei Dati Sperimentali. AA 2009/2010 Pier Luca Maffettone. Elementi di Matlab

Vettori e Matrici. Corso di Calcolo Numerico. 24 Aprile 2018

Algoritmi stabili e instabili

FONDAMENTI DI INFORMATICA

Esercizi sulla rappresentazione compatta di matrici sparse

Indice Capitolo 1 Capitolo 2 Capitolo 3 Capitolo 4 Capitolo 5 Capitolo 6

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 1 - Introduzione a MATLAB

FONDAMENTI DI INFORMATICA

Fondamenti di Informatica T-1

Fondamenti di Informatica

PON Liceo Scientifico Leonardo da Vinci. Vallo della Lucania

Fondamenti di Informatica T-1

Laboratorio 1 Introduzione a Matlab R - Octave

Fondamenti di Informatica, A.A

INTRODUZIONE A MATLAB

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Introduzione a Matlab

Aritmetica in Floating Point

Laboratorio di Matlab

Fondamenti di Informatica T-1

MATLAB - Introduzione. Antonino Polimeno

Introduzione a MATLAB

Università degli Studi di Ferrara

INTRODUZIONE A MATLAB. Introduzione. Calcolatrice base. Calcolatrice base. Variabili predefinite o speciali. Variabili predefinite o speciali

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 1 - Introduzione a MATLAB

Operatori Relazionali in MATLAB. Logica e relazioni

Informatica (A-K) 5. Algoritmi e pseudocodifica

Scuola di Calcolo Scientifico con MATLAB (SCSM) 2017 Palermo Luglio 2017

Script in Matlab. INFORMATICA B + C (sezione L-Z) Ingegneria Elettrica, Chimica e dei Materiali

3. Matrici e algebra lineare in MATLAB

Introduzione a Matlab

Fondamenti di Informatica T-1

Matlab 4. Operatori logici e Script. Slide basate sul corso di C. Blundo. A.A. 2010/ GPersiano. Laboratorio di Informatica per Fisici 1

Inversa di una matrice quadrata. L operatore inv() inverte una matrice quadrata non singolare (cioè in cui il determinate è diverso da zero).

Vettori e Matrici. Vettori. Vettori e matrici: dati. Vettori di caratteri Polinomi. Dimensione (Size) numero di righe e di colonne della matrice

MATLAB Alcune funzioni utili: fprintf, length, size

A.A. 2018/2019. Fondamenti di Programmazione in MATLAB FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

Università degli Studi di Napoli Federico II CdL Ing. Elettrica Corso di Laboratorio di Circuiti Elettrici

Fondamenti di Informatica, A.A

A.A. 2018/2019 FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

Array di array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 03. A. Miola Febbraio 2008

Introduzione a Matlab

Fondamenti di Informatica A. A / 1 9

Il primo programma C++

MATLAB Elementi di grafica Costrutti di programmazione

Fondamenti di Informatica T-1

Laboratorio di Calcolo Numerico Laboratorio 3: Algoritmi stabili e instabili, Bisezione

PON Liceo Scientifico Leonardo da Vinci. Vallo della Lucania

Modulo III - Introduzione ad R

L assegnamento. Andrea Marin. a.a. 2011/2012. Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

CdS Scienze e tecnologie della comunicazione Fondamenti di Informatica. Dott. Riccardo ZESE

Fondamenti di Informatica T1 Introduzione al linguaggio Java Input/Output-Variabili-Tipi

Programmare con MATLAB c Parte 5 Cicli: for e while

Francesca Mazzia Dipartimento Interuniversitario di Matematica Università di Bari. MATLAB: lezione introduttiva

Transcript:

FONDAMENTI DI INFORMATICA Prof. Alfredo Accattatis Slide (rielaborate) del prof. Emiliano Casalicchio

Fondamenti di Informatica a.a. 15/16- A. Accattatis 2 Dimensioni (Size) di vettori e matrici Problema: dato un vettore (matrice) vogliamo sapere il numero dei suoi elementi: le sue dimensioni. MATLAB fornisce tre funzioni built-in per determinare le dimensioni dei vettori e delle matrici: size(a) quando applicato al vettore (matrice) A restituisce un vettore contenente due quantità: numero di righe e colonne length(a) restituisce il valore massimo tra le dimensioni (righe e colonne); se è un semplice vettore coincide con la sua lunghezza. numel(a) restituisce il numero degli elementi (dunque per una matrice è il prodotto di righe e colonne

Esempio >> A=rand(1,5) A = 0.4854 0.8003 0.1419 0.4218 0.9157 >> s=size(a) s = 1 5 >> whos s Name Size Bytes Class Attributes s 1x2 16 double Fondamenti di Informatica a.a. 15/16- A. Accattatis 3 >> b=rand(3,1) b = 0.7922 0.9595 0.6557 >> sb=size(b) sb = 3 1

Fondamenti di Informatica a.a. 15/16- A. Accattatis 4 Esempio Verifichiamo che length(a) restituisce il valore massimo tra le dimensioni >> confronto = length(a)==max(s) confronto = 1 >> whos comparison Name Size Bytes Class Attributes confronto 1x1 1 logical >> length(a) 5

Accedere alle componenti (indici) Indica le modalità di accesso e modifica degli elementi di un vettore Gli elementi in un vettore sono numerati sequenzialmente, in MATLAB iniziano dal valore 1 (altri linguaggi da 0; es.: C++) Sintassi: v(index) restituisce l elemento (o gli elementi) alla(e) posizione(i) specificata(e) dall indice v(index)=value modifica gli elementi alla(e) posizione(i) specificata(e) dall indice. Il vettore indice può contenere sia valori numerici che logici Fondamenti di Informatica a.a. 15/16- A. Accattatis 5 >> A=1:3:12 A = 1 4 7 10 >> A(1) %legge primo elemento 1 >> B=[2,4] B: vettore indice B = 2 4 >> A(B) 4 10

Fondamenti di Informatica a.a. 15/16- A. Accattatis 6 Un esempio di vettore indice (index vector) >> A=randn(1,10) %crea A riempita con valori distribuiti normalmente A = Columns 1 through 7 8.8840e-01-1.1471e+00-1.0689e+00-8.0950e-01-2.9443e+00 1.4384e+00 3.2519e-01 Columns 8 through 10-7.5493e-01 1.3703e+00-1.7115e+00 >> A=round(A) A = 1-1 -1-1 -3 1 0-1 1-2 >> iv=2:2:10 iv = 2 4 6 8 10 >> A(iv) -1-1 1-1 -2 >> A(2:2:10) -1-1 1-1 -2

Fondamenti di Informatica a.a. 15/16- A. Accattatis 7 Indici Numerici Il vettore indice può avere qualsiasi lunghezza Deve contenere solo numeri interi positivi Il valore del vettore indice deve seguire le seguenti regole: In lettura tutti i valori dell indice devono essere: 1 <= elemento <= length(vector) In scrittura, tutti i valori dell indice devono essere: 1 <= elemento

Fondamenti di Informatica a.a. 15/16- A. Accattatis 8 Esempio >> B = [-1 0 1 2 3]; >> C=[1 2 4 5 1 1]; >> B(C) -1 0 2 3-1 -1

Fondamenti di Informatica a.a. 15/16- A. Accattatis 9 Effettuare «sostituzioni» di valori negli array o aggiunta di nuovi elementi (aumento delle dimensioni) Puo presentarsi l esigenza di modificare dei valori Questo accade normalmente in molti algoritmi MATLAB rende questo compito molto semplificato Esistono alcune semplici regole

Fondamenti di Informatica a.a. 15/16- A. Accattatis 10 Regole di sostituzione degli elementi di un Array (vettori e matrici) >> A=1:3:12 A = 1 4 7 10 >> A(7)??? Index exceeds matrix dimensions. >> B=[2,4]; >> A(B)=[0,0] A = 1 0 7 0 >> A(4)=99 A = 1 0 7 99 >> A(7)=99 A = 1 0 7 99 0 0 99

1-11 Fondamenti di Informatica a.a. 15/16- A. Accattatis Regole di sostituzione degli elementi di un Array (vettori e matrici) 1. Effettuare una sostituzione oltre la fine del vettore implica l estensione automatica della lunghezza. 2. Tutti gli elementi non esplicitamente sostituiti rimangono invariati. 3. Gli elementi oltre la precedente lunghezza e non direttamente assegnati vengono messi al valore 0 (zero). >> A(7)=99 A = 1 0 7 99 0 0 99

1-12 Fondamenti di Informatica a.a. 15/16- A. Accattatis Indici logici Il vettore indice deve essere di dimensioni minori o uguali lunghezza del vettore originale Deve contenere valori logici (true or false) L accesso agli elementi del vettore è effettuato tramite la posizione relativa del vettore logico In lettura, vengono restituiti solo gli elementi corrispondenti all indice con valore true In fase di sostituzione degli elementi, vengono sostituiti solo quelli corrispondenti all indice con valore true Attenzione I vettori logici sono visualizzati nella command window come 0 e 1 ma non sono assolutamente valori numerici! A = 1 0 7 99 0 0 99 >> a=true a = 1 >> a=false a = 0 >> mask=[true,false,true,true] mask = 1 0 1 1 >> A(mask) 1 7 99 >> A(mask)=[66,66,66]; >> A A = 66 0 66 66 0 0 99

13 Fondamenti di Informatica a.a. 15/16- A. Accattatis Il tipo logico è differente dal tipo double!!! >> mask=[0 1 0 1] mask = 0 1 0 1 >> whos mask Name Size Bytes Class Attributes mask 1x4 32 double >> A A = 1 4 7 10 >> A(mask)??? Subscript indices must either be real positive integers or logicals.

1-14 Fondamenti di Informatica a.a. 15/16- A. Accattatis Shortening, ridurre le dim. di un Array Non è mai effettivamente necessario; è preferibile estrarre i dati voluti tramite indici piuttosto che rimuovere i dati non utili Cambiare le dimensioni di un vettore, ed in generale di una struttura dati, può portare a problemi logici I problemi possono verificarsi in particolari sezioni dell algoritmo: consigliabile pertanto usare sempre le funzioni SIZE e LENGTH ed in generale MAI tenere a mente le dimensioni ma affidiamoci alle primitive Quando è invece utilissimo: per esempio nel caso in cui stiamo manipolando grosse quantità di dati (es. Software che gestiscono riprese video) allora può convenire modificare le dimensioni (risparmio di memoria)

Shortening, ridurre le dim. di un Array Può essere ottenuto applicando l operatore vettore vuoto (usando questo operatore si crea un vettore, appunto, vuoto) ai singoli elementi di un vettore, oppure applicandolo alle intere righe o colonne. Attenzione: eliminare un elemento è diverso che metterlo al valore zero! >> vec = 3:5 vec = 3 4 5 >> vec(2)=[] %rimuove il secondo elemento vec = 3 5 Fondamenti di Informatica a.a. 15/16- A. Accattatis 15 Esempio Creiamo un vettore vuoto. >> E=[] >> whos E Name Size Bytes Class Attributes E 0x0 0 double

Fondamenti di Informatica a.a. 15/16- A. Accattatis 16 Creare un vettore colonna E sufficiente interporre un punto e virgola tra i valori (invece di spazio o virgola), usando la consueta rappresentazione tra parentesi quadre; >> c = [2; 5; 7; 1] c = 2 5 7 1 Non c è modo diretto per usare l operatore due punti nel caso di vettori colonna però si può sempre creare un vettore riga e trasporlo >> r=1:3; % crea un vettore riga >> c = r % trasposizione c = 1 2 3

1-17 Fondamenti di Informatica a.a. 15/16- A. Accattatis Operazioni su vettori Tre tecniche si estendono automaticamente da quelle disponibili sui valori scalari: Operazioni aritmetiche Operazioni logiche Funzioni di libreria Due tecniche sono invece specifiche per gli array in generale ed i vettori in particolare: Concatenazione Slicing (generalized indexing)

18 Fondamenti di Informatica a.a. 15/16- A. Accattatis Precedenza degli operatori Descrizione degli operatori e loro precedenza http://www.mathworks.com/help/techdoc/matlab_prog/f0-40063.html

1-19 Fondamenti di Informatica a.a. 15/16- A. Accattatis Operazioni aritmetiche Nella Command window, digitare le seguenti righe: >> A = [2 5 7 1 3]; >> A + 5 7 10 12 6 8 >> A.* 2 4 10 14 2 6 >> B = -1:1:3 B = -1 0 1 2 3

1-20 Fondamenti di Informatica a.a. 15/16- A. Accattatis Operazioni aritmetiche(continued) >> A.* B % moltiplicazione elemento per elemento -2 0 7 2 9 >> A * B % moltiplicazione tra matrici!!??? Error using ==> mtimes Inner matrix dimensions must agree. >> A * B 16 >> C = [1 2 3] C = 1 2 3 >> A.* C % A e C devono avere la stessa lunghezza??? Error using ==> times Matrix dimensions must agree.

1-21 Fondamenti di Informatica a.a. 15/16- A. Accattatis Operazioni logiche >> A = [2 5 7 1 3]; >> B = [0 6 5 3 2]; >> A >= 5 0 1 1 0 0 >> A >= B 1 0 1 0 1 >> C = [1 2 3] >> A > C??? Error using ==> gt Matrix dimensions must agree.

1-22 Fondamenti di Informatica a.a. 15/16- A. Accattatis Operazioni logiche (continued) >> A = [true true false false]; >> B = [true false true false]; >> A & B 1 0 0 0 >> A B 1 1 1 0 >> C = [1 0 0]; % NON è un vettore logico >> A(C) % OK, si.. indicizzare vettori logici ma??? Subscript indices must either be real positive integers or logicals.

1-23 Fondamenti di Informatica a.a. 15/16- A. Accattatis Footnote: la funzione find Continuando dal codice nella slide precedente: >> C = find(b) [1 3] La funzione find(...) prende in ingresso un vettore logico e restituisce un vettore di indici che identificano gli elementi veri (true) del vettore di ingresso.

1-24 Fondamenti di Informatica a.a. 15/16- A. Accattatis Funzioni di libreria Tutte le funzioni MATLAB accettano vettori di numeri piuttosto che singoli valori e restiuiscono un vettore della medesima lunghezza. Funzioni Speciali: sum(v) e mean(v) prende in ingresso un vettore e ritorna uno scalare min(v) e max(v) ritornano il minimo od il massimo valore di un vettore, oltre alla posizione round(v), ceil(v), floor(v), e fix(v) rimuovono la parte frazionaria secondo diverse strategie: arrotondamento, arrotondamento verso l alto, verso il basso, verso lo zero

1-25 Fondamenti di Informatica a.a. 15/16- A. Accattatis Concatenazione MATLAB consente la costruzione di un nuovo vettore, concatenando più vettori: A = [B C D... X Y Z] I singoli elementi possono essere vettori definiti come costanti o variabili, e la lunghezza di A sarà la somma delle lumghezze dei singoli vettori. A = [1 2 3 42] è un caso particolare in cui le singole componenti sono vettori ad una sola componente (scalari).

1-26 Fondamenti di Informatica a.a. 15/16- A. Accattatis Slicing (indicizzazione generalizzata) A(4) crea un vettore indice 1x1 (che indicizza la posizione 4), ed lo usa per estrarre lo specifico elemento dal vettore A In generale, B(<rangeB>) = A(<rangeA>) Dove <rangea> e <rangeb> sono entrambi vettori indice, A è un array già definito, e B può essere un array già definito, oppure un nuovo array, o addirittura omesso (in questo caso B verrà automaticamente rappresentato dalla variabile universale ans). Ai valori in B indicizzati in <rangeb> sono assegnati I valori di A indicizzati da <rangea>.

1-27 Fondamenti di Informatica a.a. 15/16- A. Accattatis Regole per lo Slicing Le dimensioni di <rangeb> devono essere uguali alle dimensioni di <rangea> oppure <rangea> deve avere taglia 1; se B non era preesistente, essa è riempita di valori nulli (zero) per ogni posizione non esplicitamente assegnata se B era invece preesistente, i valori non direttamente assegnati in <rangeb> rimangono invariati