Anteprima
Vedrai una selezione di 4 pagine su 15
Appunti teoria MATLAB Pag. 1 Appunti teoria MATLAB Pag. 2
Anteprima di 4 pagg. su 15.
Scarica il documento per vederlo tutto.
Appunti teoria MATLAB Pag. 6
Anteprima di 4 pagg. su 15.
Scarica il documento per vederlo tutto.
Appunti teoria MATLAB Pag. 11
1 su 15
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Teoria Informatica

La funzione disp(vet..) mostra il contenuto della variabile vettore. Utilizzando gli indici v(i) è possibile prendere un determinato valore dell'array posizionato in una determinata cella. È inoltre possibile modificare il contenuto delle celle scrivendo v(4) = 77, ciò modificherà il contenuto della quarta cella.

Strutture iterative for utilizzato quando il numero di iterazioni è noto a priori:

for variabile = m:s:n
    blocco_istruzioni
end

L'espressione m:s:n indica il valore iniziale m alla variabile di ciclo che viene incrementata dal valore s detto step o incremento (può anche non essere specificato e il sistema incrementa di 1). Le istruzioni nel blocco iterativo vengono eseguite una sola volta per ogni iterazione, utilizzando il valore corrente della variabile ciclo. L'elaborazione continua finché la variabile di ciclo supera il valore finale per n. Di solito la variabile di un ciclo è uno scalare ma...

può anche essere una matrice o un vettore: ```html

es: for k = 1: 1 : 10
x = k^2
end

N.B. finito il ciclo la variabile ha il valore che ha interrotto il ciclo non l'ultima visualizzata

es: stampare tabella ascii
for i = 0:255 ⇒
fprintf("%d %c\n", i, i);
end

es: prendere 5 numeri e inserirli in un array
x = zeros(1,5);
x = [];
for i = 1:length(x)
for i = 1:5
x(i) = input("inserisci un numero: ");
x(i) = input("inserisci un numero: ");
end
end
N.B. la funzione lenght(x) indica il numero di celle in un array

es: costruire un ciclo usando un array già fatto
for variabile = valore_array
for i = [1:1:10]
blocco_istruzioni
disp (i)
end
end

es: funzione che prende in input un array x e restituisce in output la somma degli elementi che esso contiene
s = 0;
for i = 1:lenght(x)
s = s + x(i);
end
somma = s;

es: funzione che prende in input un array cx e restituisce in output l'elemento con valore massimo
massimo = x(1);
for i = 2:lenght(x)
if x(i) >

```

massimomassimo = x(i)

end

endwhile

utilizzato quando il numero di iterazioni non è noto a priori e il ciclo termina quando è soddisfatta una determinata condizione.

while condizione

blocco_istruzioni

end

finché la condizione del while è verificata (risulta essere vera) le istruzioni contenute nel corpo del ciclo verranno eseguite. Quando non appena le condizioni non sono verificate si interrompe.

es: stampare tutti i numeri da 20 a 50

x = 20

while x < 50

disp(x);

x = x+3;

end

es: eseguire il ciclo finché l'utente non inserisce un valore negativo

somma = 0;

x = input('inserisci x (>0): ')

while x>0

somma = somma + x;

x = input('inserisci x (>0): ')

end

disp(['somma: ', num2str(somma)]);

Matrici le matrici sono array multidimensionali

A = [2,4,10;16,3,7]

A = [2 4 10;16 3 7]

Funzioni per matrici:

zeros(nr, nc) matrici nr righe e nc colonne composte da zero

Teoria Informatica 7

ones(nr, nc) matrici nr righe e nc colonne composte da uno

matrice nr x nc composta da tutti 1 (nr, nc) matrici nr x nc identità (nr, nc) matrice di numeri pseudocasuali compresi tra 0 e 1 (n,A,B,C...) crea una nuova matrice concatenando A B e C per righe se n=1 e per colonne se n=2 (nr,nc) crea una matrice di stringhe L'indicazione di una matrice è molto simile a quella di un array: x(r, c) indica la r-esima riga e la c-esima colonna. Altrimenti, scrivendo: x(r, :) oppure x(:, c) si indica tutta la colonna o tutta la riga. = zeros(3,3) (1,3) = 4 0 0 4 0 0 0 %oppure = zeros(3,3) = ones(2,2) (1 : 2; 1 : 2) = x %sottoinsieme della matrice su cui si scrive sopra Matlab legge le i-esime posizioni dei valori dentro alla matrice in ordine di colonna. = [1 2 3; 4 5 6; 7 8 9] disp(a) 1 2 3 4 5 6 7 8 9 (1) ans = 1 (2) ans = 4 ecc... È possibile eliminare o una riga o una colonna della matrice, ma non una sola cella. Per far ciò, si pone la riga uguale all'array vuoto: A(2,:) = []. Trasposta di una matrice

A’ dove “ ‘ “ è l’operatore di trasposizione

max (A): trova il valore massimo di ogni colonna della matrice, stessa cosa per la funzione min (A), per trovare il massimo dell’intera matrice si scrive max ( max (A) )

mean (A): trova la media di ogni colonna, oppure si scrive mean (A,2) per trovare la media di ogni riga

sum (A): da la somma degli elementi di A, se A è una matrice da la somma di ogni colonna, scrivendo sum (A, dim) se dim=1 somma gli elementi per colonna, se dim=2 somma gli elementi per riga

sort (A): ordina ogni colonna della matrice in maniera crescente

size (A): restituisce un array contenente le dimensioni di m. righe e n. colonne

length (A): restituisce il numero degli elementi di A se è un array altrimenti il numero massimo tra righe e colonne se A matrice

numel (A): restituisce il numero di elementi della matrice A

find (A): restituisce un array contenente gli indici degli elementi non nulli della matrice

any (A):

mobile è rappresentato da una sequenza di cifre decimali, separata da un punto decimale, seguita da un esponente che indica la potenza di 10 a cui moltiplicare la sequenza di cifre. Ad esempio, il numero 3.14e2 rappresenta il numero 314. Le operazioni aritmetiche sui numeri in virgola mobile seguono le regole della matematica, ma possono comportare approssimazioni a causa della limitata precisione della rappresentazione. È importante considerare la precisione e l'accuratezza dei risultati quando si lavora con numeri in virgola mobile. Le matrici possono essere utilizzate per rappresentare dati strutturati, come ad esempio una tabella di valori. Le operazioni tra matrici, come la somma, la sottrazione e la moltiplicazione, seguono le regole della matematica delle matrici. È possibile moltiplicare una matrice per un'altra matrice o per uno scalare, e si possono eseguire moltiplicazioni elemento per elemento utilizzando l'operatore ".*". È anche possibile utilizzare una matrice di caratteri per rappresentare una matrice di stringhe. In questo caso, ogni elemento della matrice è una stringa di caratteri. Per eliminare un elemento da una matrice o da un vettore, è possibile assegnare un valore vuoto all'elemento utilizzando la sintassi A(i) = []. Qui, "i" rappresenta la posizione dell'elemento da eliminare. In conclusione, i numeri in virgola mobile e le matrici sono strumenti importanti nell'ambito dell'informatica e possono essere utilizzati per rappresentare e manipolare dati in modo efficiente.

mobile è costituito nella forma più semplice da: un campo significando o mantissa M; un campo esponente E; = * E un generico numero reale è rappresentato come a M b

Questo metodo di scrittura permette di rappresentare un ampissimo insieme numerico all'interno di un determinato numero di cifre, cosa che la virgola fissa non concede. Un numero è caratterizzato dal valore b, che costituisce la base della notazione in cui è scritto il numero, e la quantità p di cifre presenti nella mantissa, detta precisione. La mantissa di un numero scritto con questo metodo si presenta quindi nella forma +- d.ddd...ddd (una quantità p di cifre d comprese tra 0 e b-1). Se la prima cifra della mantissa è diversa da zero, si dice che la rappresentazione è normalizzata. (se viene usato il campo s, la mantissa deve essere positiva, e questo bit ne determina il segno)

Standard IEEE 754: precisione semplice a 32 bit precisione doppia a 64 bit

1 8

23 1 11 52+/- esp mantissa +/- esp mantissasegno: 0 per positivo, 1 per negativo

FilePosso essere visti come contenitori permanenti di informazioni. Si può scrivere o leggere un file, questo viene salvato nella memoria permanente. I flussi permettono di immettere o fa uscire dati dai file (un esempio di flusso è l’input che porta informazioni dalla tastiera al programma ed è chiamato standard input, mentre un flusso di uscita è la funzione fprintf che prende dati dal programma e li fa uscire dallo schermo)

la funzione fopen permette di aprire un file memorizzato nel percorso_del_file (se non specificato viene presa la posizione della cartella del workspace del progetto), deve essere specificata la modalita_apertura.

fid = fopen(percorso_del_file, modalita_apertura)

La modalita_apertura può essere:

  • Scrittura (’w’) sovrascrive al file già esistente o ne apre uno nuovo;
  • Lettura (’r’) non modifica il file;
  • Scrittura e lettura

(’w+’) oppure (’r+’);

Append (’a’) è una modalità d’aggiunta, apre un file e ne crea uno nuovo e si posiziona alla fine di esso. La funzione fopen restituisce un valore fid (file identifier) che è un identificativo al file aperto (è una variabile che rappresenta il flusso). La funzione fclose chiude il file identificativo fid: esempio: fid = fopen('C:\test.txt','r'); fclose(fid);

Le principali funzioni utilizzate nei file per scrivere sono fwrite e fprintf

fwrite: scrive un array, passato come parametro, su un file specificato

fprintf: scrive sul file, secondo un formato specificato dall’utente.

Le principali funzioni per leggere nei file sono: fread e fscanf

fread: legge un array, di lunghezza specificata, da un file indicato come parametro

fscanf: legge da file, specificando esplicitamente il formato dei dati

fgetl: legge invece del file sorgente una sola riga (ogni lettura è

sequenziale ossia letta una riga il lettore va avanti alla riga seguente)
%ricopiare un file su un altro
fid = fopen(percorso_file,modalità_apertura);
linea = fgetl(fid);
fprintf(fid,formato,variabili);
fclose(fid);

%supponiamo di voler leggere il contenuto del file chiamato "canto1.txt" e copiarlo in un altro file chiamato "canto1_copia.txt"
fid1 = fopen('canto1.txt','r');
fid = fopen('canto1_copia.txt','w');
linea = fgetl(fid1);
while ischar(linea)
    fprintf(fid,'%s\n',linea);
    linea = fgetl(fid1);
end
fclose(fid1);
fclose(fid);

N.B. la funzione ischar vede se nella riga presa in considerazione ci sono caratteri oppure no.
È consigliabile fare dei controlli dopo aver aperto un file in quanto esso non è scontato esista o sia correttamente salvato. Viene quindi utilizzato un if (fid == -1) in quanto ciò è verificato se il file non è stato aperto, ciò deve essere fatto sia per file in lettura
che in scrittura.
return: permette di bloccare la lettura o la scrittura nel file
importdata: permette di importare mediante comando i dati da diversi tipi di file senza sia necessario che il file sia
aperto.
A = importdata('matrice.txt');
A = 1 4 64 2 56 5 4
testo del file: (la virgola è un separatore di colonna)
1, 4, 64, 2, 56, 5, 4
%SCRITTURA SU FILE
N = 10;
v = [];
%acqcuisizione da tastiera degli elementi del vettore
for i = 1:N
v(i) = input('');
end
%apertura file in modalità scrittura
Dettagli
A.A. 2021-2022
15 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher eric.ravaioli02 di informazioni apprese con la frequenza delle lezioni di Fondamenti di informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Bologna o del prof Ravaioli Mirko.