Corso di Fondamenti di Informatica

Slides:



Advertisements
Presentazioni simili
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
Advertisements

Parte 2 Programmare in Matlab – I Sommario: Introduzione: m-file Strutture condizionali e cicli –Istruzione “if” + Operatori logici in MatlabIstruzione.
Fondamenti di Informatica A - Massimo Bertozzi LE RAPPRESENTAZIONI CONCATENATE.
1 Simulazione Numerica dei Fenomeni di Trasporto Necessità di introduzione dei tensori  11  12  13  23  21  22 Vogliamo descrivere in un modo che.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 3 – Info B Marco D. Santambrogio – Matteo Ferroni –
.  I tipi di dati non primitivi sono gli array, le struct e le union.  Gli array sono degli aggregati di variabili dello stesso tipo.  La dichiarazione.
“Vivere insieme” – Lezione6
© 2007 SEI-Società Editrice Internazionale, Apogeo
Java World Matrici.
Esercizio fatture.
Branch and Bound Lezione n°19 Prof.ssa Rossella Petreschi
EasyGraph Dynamic web-based dashboard
Branch and Bound Lezione n°14 Prof.ssa Rossella Petreschi
Terza Lezione → Navigare nel file System → parte 2
Richiami di Algebra Matriciale
Lezione n°17 Prof.ssa Rossella Petreschi
Cluster Analysis Definizione di Classificazione: operazione concettuale condotta adottando un solo criterio (detto fondamento della divisione) per individuare.
Commenti Ogni riga che comincia con il simbolo # non viene letta dall’interprete per cui rappresenta un modo per commentare il listato # Questo è un esempio.
MATRICI (ARRAY) IN MATLAB/OCTAVE
Excel 1 - Introduzione.
Programmazione strutturata
FORMULE E FUNZIONI SU EXCEL
Informatica per Scienze Geologiche LT a.a
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
Lezione n.7b (Corso di termodinamica) Cicli diretti ed indiretti
Richiami di Algebra Matriciale
Informatica per Scienze Geologiche LT a.a
I numeri relativi DEFINIZIONE. Si dicono numeri relativi tutti i numeri interi, razionali e irrazionali dotati di segno (positivo o negativo). ESEMPI Numeri.
Impariamo a conoscere le Matrici
Corso Java Matrici.
32 = 9 x2 = 9 x = 3 32 = 9 √9 = 3 L’estrazione di radice
Matrici Definizioni Matrici Rettangolari Quadrate 02/01/2019
Scrivere programmi corretti
Introduzione agli Algoritmi e alle Strutture Dati
Codici rilevatori di errori
Estrazione di radici quadrate
Strapazziamo le immagini…
Backtracking Lezione n°13 Prof.ssa Rossella Petreschi
= 17 somma addendi + ADDIZIONE
ANALISI DI REGRESSIONE
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Progetto 1 Input Creare una Funzione commentata che prenda come input:
Java Matrici.
* 07/16/96 Sez. 2: Ordinamento La consultazione di banche dati è sempre più cruciale in tutte le applicazioni dell’Informatica. Se vogliamo consultare.
APPUNTI SUL LINGUAGGIO C Esercizi sugli array e strutture
APPUNTI SUL LINGUAGGIO C Esercizi su File e Alberi Binari
Le stringhe in C++ Laboratorio 26 Aprile Dott. Serena Villata
APPUNTI SUL LINGUAGGIO C
Logica Lezioni
Backtracking Lezione n°17 Prof.ssa Rossella Petreschi
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
Process synchronization
Programmazione e Laboratorio di Programmazione
Fondamenti di Informatica
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Matrici e determinanti
Lezione Terza Primi passi di programmazione
Richiami di Algebra Matriciale
Corso di Fondamenti di Informatica
Process synchronization
Ricerca 01/08/2019 package.
La programmazione strutturata
Algoritmi di ordinamento
Corso di Fondamenti di Informatica
Script su vettori Realizza uno script che chiede in input una dimensione d e crea un vettore di d numeri interi casuali. Poi calcola la somma dei due numeri.
Corso di Fondamenti di Informatica
I sistemi di equazioni di 1° grado
Programmazione e Laboratorio di Programmazione
Corso di Fondamenti di Informatica
Transcript della presentazione:

Corso di Fondamenti di Informatica Macroarea di Ingegneria 2018/19 Tutor: prof. Francesco De Vincenzi

MATLAB: esercizi sui vettori Alcuni esercizi sui vettori della scorsa lezione, risolti con i costrutti ciclo e scelta 5) azzerare le posizioni pari di X 7) azzerare tutti i valori inferiori a 10 8) azzerare il valore massimo

MATLAB: soluzioni esercizi sui vettori 5) azzerare le posizioni pari di X X(2:2:length(X))=0; for i = 2:2:length(X) X(i)=0; end

MATLAB: soluzioni esercizi sui vettori 7) azzerare tutti i valori inferiori a 10 X(find(X<10))=0; for i = 1:length(X) if X(i)<10 X(i)=0 end

MATLAB: soluzioni esercizi sui vettori 8) azzerare il valore massimo X(find(X==max(X)))=0; m=max(X); for i=1:length(X) if X(i)==m X(i)=0; end

MATLAB: confronto tra indicizzazione e costrutti L’indicizzazione (negli array in generale) è uno strumento potente per applicare una stessa operazione a tutti gli elementi (o un sottoinsieme degli elementi dell’array). Se si vuole costruire un procedimento che differenzia le operazioni da fare al cambiare dell’elemento, è necessario ricorrere ai costrutti della programmazione (ciclo,scelta). Esempio, dato un vettore, inserire in ciascuna posizione il valore più grande tra quelli presenti dall’inizio del vettore alla posizione stessa. X = [2 4 2 5 3 3 7 1 3 8];  X = [2 4 4 5 5 5 7 7 7 8]; for i=1:length(X) X(i) = max(X(1:i)); end

MATLAB: Tipi di dato stutturati (array) Un array è un struttura di dati - Omogenei (tutti dello stesso tipo) -Ordinata (ogni elemento è identificato da una posizione, che è un insieme di uno o più indici) 5 7 42 1 -3 2 254 34 45 4 23 54 6 Array a due dimensioni (2,4)

1 2 3 4 5 6 7 8 MATLAB: creazione di una matrice Per creare una matrice è sufficiente elencarne i valori: uno spazio o una virgola separano gli elementi di una riga, un punto e virgola separa una riga dalla successiva. A=[1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8 ]; 1 2 3 4 5 6 7 8

MATLAB: creazione di una matrice zeros(m,n) Crea una matrice di zeri mxn ones(m,n) Crea una matrice di valori 1 e dimensione mxn int32(rand(m,n)*100) Crea una matrice mxn di numeri interi casuali compresi tra 0 e 99

1 2 3 4 5 6 7 8 MATLAB: riferirsi ad un elemento o sottomatrice Per creare una matrice è sufficiente elencarne i valori: uno spazio o una virgola separano gli elementi di una riga, un punto e virgola separa una riga dalla successiva. A(3,4)  6 %tramite riga e colonna A(11)  5 %tramite posizione assoluta A(3,:)  [3 4 5 6 7] %intera riga A(:,2)  [2 ; 3 ; 4 ; 5] % intera colonna A(2:4,:)  [2 3 4 5 6 ; 3 4 5 6 7 ; 4 5 6 7 8] %tutte le righe dalla seconda alla quarta A(2:3, 4)  [5;6] %sottomatrice colonna A(2:4, 4:5)  [5 6;6 7;7 8] %sottomatrice generica 1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8 9 MATLAB: concatenare più matrici C = [9 ; 9 ; 9 ; 9]; Aggiungere una colonna alla fine di una matrice 1 2 3 4 5 6 7 8 9 C = [9 ; 9 ; 9 ; 9]; A = [A C]; Provare per esercizio ad aggiungere una colonna a sinistra

1 2 3 4 5 6 7 8 9 MATLAB: concatenare più matrici R = [9 9 9 9 9]; Aggiungere una riga alla fine di una matrice 1 2 3 4 5 6 7 8 R = [9 9 9 9 9]; A = [A ; R]; Provare per esercizio ad aggiungere una riga all’inizio 9

1 2 3 4 5 6 7 8 MATLAB: eliminare righe e colonne A (4,:)=[] Eliminare l’ultima riga di una matrice 1 2 3 4 5 6 7 8 A (4,:)=[] Per indicare in modo generico l’ultimo: lung=size(A); %lung è un vettore! A(lung(1),:)=[];

1 2 3 4 5 6 7 8 MATLAB: eliminare righe e colonne A (:,5)=[] Eliminare l’ultima colonna di una matrice 1 2 3 4 5 6 7 8 A (:,5)=[] Per indicare in modo generico l’ultimo: lung=size(A); %lung è un vettore! A(:,lung(2))=[]; Tramite l’indicizzazione, si può eliminare una qualsiasi riga o colonna di una matrice.

1 2 3 4 5 6 7 8 9 MATLAB: sostituire righe e colonne R = [ 9 9 9 9 9]; Sostituire una riga 1 2 3 4 5 6 7 8 9 R = [ 9 9 9 9 9]; A (2,:) = R Similmente, si può sostituire una colonna.

1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 9 MATLAB: inserire righe e colonne Inserire una riga in posizione p 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 9 dimensioni= size(A); righe=dimensioni(1); for i=righe+1:-1:p+1 A(i,:)=A(i-1,:) end A(p,:)=R; Per esercizio provare ad inserire una colonna in posizione generica p.

A=uint32(rand(4,5)*100); dimensioni=size(A); righe=dimensioni(1); R=[9 9 9 9 9]; p=3; A=[A(1:p,:) ; R ; A(p+1:righe,:)]

Creare una matrice 4x5 con valori random compresi tra 0 e 99 A=uint32(rand(4,5)*100);

MATLAB: cercare un valore in una matrice Data una matrice, vogliamo trovare la posizione di un elemento 1 2 5 3 7 8 9 1 6 4 find(A==8)  7 17 A==8; A(find(A==8))  8 8 Coordinate della posizione del primo: posizioni = find(A==8); posPrimo = posizioni(1); [righe,colonne] = size(A); riga = mod(posPrimo-1, righe)+1; colonna = floor(posPrimo / righe)+1;

2 5 3 7 8 9 1 6 4 MATLAB: cercare un valore in una matrice Data una matrice, vogliamo trovare la posizione di un elemento [r,c]=size(A); for i=1:r for j=1:c if A(i,j)==8 rn=i; cn=j; end disp (rn); disp (cn); 2 5 3 7 8 9 1 6 4 N.B: se il valore 8 è presente più volte nella matrice, questo script trova la posizione dell’ultima occorrenza! Per evitare questo, si interrompe il ciclo la prima volta che viene trovato il valore: break; i=r; j=c;

trovato=false; [r,c]=size(A); for i=1:r if(trovato==false) for j=1:c if A(i,j)==8 rn=i; cn=j; %trovato=true; end disp (rn); disp (cn);

MATLAB: confrontare un vettore con le righe/colonne di una matrice 2 5 3 7 4 9 1 6 8 Come sapere se una riga di una matrice è uguale al vettore R? Alcune idee… min(A(3,:)==R)==1 dimensioni=size(A); sum(A(3,:)==R)==dimensioni(2) R 4 8 3 2 7

MATLAB: confrontare un vettore con le righe/colonne di una matrice Data una matrice, e un vettore riga, trovare la posizione della prima riga della matrice uguale al vettore A 2 5 3 7 4 9 1 6 8 pos=0; dimensioni=size(A); for i=1:dimensioni(1) if (min(A(i,:)==R)==1) pos=i; disp(pos); %break; end R 4 8 3 2 7

dimensione=input('Inserisci il numero di elementi del vettore'); for i=1:dimensione valore=input('inserisci il prossimo valore' ); R=[R valore]; end disp(R);

MATLAB: esercizio Realizzare uno script. Data una qualsiasi matrice, aggiungere a questa una colonna a destra contenente per ogni riga il valore massimo della riga. A A 2 5 3 7 4 9 1 6 8 2 5 3 7 4 9 1 6 8

MATLAB: esercizio Realizzare uno script. Data una qualsiasi matrice, aggiungere a questa una colonna a destra contenente per ogni riga il valore massimo della riga. Creo un vettore vuoto C Calcolo le dimensioni di A , salvandole nel vettore dimensioni Per tutte le righe di A aggiungo al vettore C una nuova riga, contenente il valore massimo di una riga di A Aggiungo a destra di A il vettore C ottenuto Mostro A

Creo un vettore vuoto C Calcolo le dimensioni di A , salvandole nel vettore dimensioni Per tutte le righe di A aggiungo al vettore C una nuova riga, contenente il valore massimo di una riga di A Aggiungo a destra di A il vettore C ottenuto Mostro A C=[]; dimensioni=size(A); for i=1:dimensioni(1) C=[C;max(A(i,:))]; end A=[A C]; disp(A);

MATLAB: esercizio Realizzare uno script. Data una qualsiasi matrice, aggiungere a questa una riga in fondo contenente per ogni colonna il valore minimo della colonna. A A 2 5 3 7 4 9 1 6 8 2 5 3 7 4 9 1 6 8

MATLAB: esercizi Data una matrice A ed un numero x, aggiungere ad A una colonna a destra contenente in ogni posizione il numero di volte che x compare nella corrispondente riga di A. Data una matrice A, in ogni riga scambiare il primo e l’ultimo elemento se non sono in ordine di grandezza. Successivamente, azzerare in ogni riga tutti gli elementi non compresi tra il primo e l’ultimo. Data una matrice A, contare il numero di volte che vi compare il suo valore massimo.

MATLAB: esercizi Data una matrice A ed un numero x, aggiungere ad A una colonna a destra contenente in ogni posizione il numero di volte che x compare nella corrispondente riga di A. 2 5 3 7 4 9 1 6 8 2 5 3 7 4 1 9 6 8 x=5

Data una matrice A ed un numero x, aggiungere ad A una colonna a destra contenente in ogni posizione il numero di volte che x compare nella corrispondente riga di A. C=[]; dimensioni=size(A); for i=1:dimensioni(1) volte=0; for j=1:dimensioni(2) if(A(i,j)==x) volte=volte+1; end C=[C ; volte]; A=[A C]; …oppure…. C=[]; dimensioni=size(A); for i=1:dimensioni(1) C=[C ; length(find(A(i,:)==x))]; end A=[A C];

MATLAB: esercizi Data una matrice A, in ogni riga scambiare il primo e l’ultimo elemento se non sono in ordine di grandezza. Successivamente, azzerare in ogni riga tutti gli elementi non compresi tra il primo e l’ultimo. 2 5 3 7 4 8 9 1 6 2 3 4 6 8 5 7

Data una matrice A, in ogni riga scambiare il primo e l’ultimo elemento se non sono in ordine di grandezza. Successivamente, azzerare in ogni riga tutti gli elementi non compresi tra il primo e l’ultimo. A=[1 13 16 5 7 ; 4 1 7 4 3 ; 7 2 6 10 5]; dimensioni=size(A); for i=1:dimensioni(1) if A(i,1)>A(i,dimensioni(2)) appoggio=A(i,1); A(i,1)=A(i,dimensioni(2)); A(i,dimensioni(2))=appoggio; end for i=1:dimensioni(1) for j=2:dimensioni(2)-1 if A(i,j)<A(i,1) || … A(i,j)>A(i,dimensioni(2)) A(i,j)=0; end

Oppure… dimensioni=size(A); righe=dimensioni(1); colonne=dimensioni(2); for i=1:righe if A(i,1)>A(i,colonne) appoggio=A(i,1); A(i,1)=A(i,colonne); A(i,colonne)=appoggio; end A(i,find(~(A(i,:)>=A(i,1) & A(i,:)<=A(i,colonne))))=0;

MATLAB: esercizi Data una matrice A, contare il numero di volte che vi compare il suo valore massimo. 2 5 3 7 4 9 1 6 8 3

Data una matrice A, contare il numero di volte che vi compare il suo valore massimo. m=max(max(A)); dimensioni=size(A); volte=0; for i=1:dimensioni(1) for j=1:dimensioni(2) if m==A(i,j) volte=volte+1; end …oppure…. length(find(A==max(max(A)))) sum(sum(A==max(max(A)))) L’approccio procedurale qui non conviene proprio!

MATLAB: esercizi 1) Data una matrice A, inserire in una nuova colonna in ultima posizione la media dei valori di ogni riga 2 5 3 7 4 9 1 6 8 2 5 3 7 4 4,3 9 1 6 4,0 8 6,2 5,6 2) Data una matrice A, inserire una nuova riga in fondo alla matrice con la somma di tutti gli elementi della colonna escluso il massimo della colonna 2 5 7 4 9 1 6 8 3 13 16 15 2 5 3 7 4 9 1 6 8

[righe,colonne]=size(A); C=[]; for i=1:righe m=mean(A(i,:)); C=[C;m]; 1) Data una matrice A, inserire in una nuova colonna in ultima posizione la media dei valori di ogni riga A = uint32(rand(4,5)*100); [righe,colonne]=size(A); C=[]; for i=1:righe m=mean(A(i,:)); C=[C;m]; end A=[A C];

[righe,colonne]=size(A); R=[]; for i=1:colonne 2) Data una matrice A, inserire una nuova riga in fondo alla matrice con la somma di tutti gli elementi della colonna escluso il massimo della colonna A=uint32(rand(4,5)*100); [righe,colonne]=size(A); R=[]; for i=1:colonne s = sum(A(A(:,i)~=max(A(:,i)),i)); R=[R s]; end A=[A; R];