vuoi
o PayPal
tutte le volte che vuoi
(RAM)-Fase di Fetch:
Fase in cui il programma è stato trasferito dalla memoria di massa in memoria RAM sotto forma di sequenza di istruzioni in linguaggio macchina. L'istruzione successivamente viene prelevata e copiata tramite il BUS nei circuiti costituenti il Datapath.
Fase di Decode:
L'istruzione viene decodificata, ossia si cerca di associare a quel determinato codice le "azioni" fisiche da compiere per eseguire il comando ("ciclo di datapath").
Fase di Execute:
Fase in cui la CPU esegue l'istruzione (con il ciclo di datapath) interagendo con la memoria se l'istruzione richiede il caricamento di operandi ed eventuale successiva memorizzazione dei risultati ottenuti. Quando il programma termina, i risultati vengono inviati al dispositivo di Output.
Capitolo 6
Interfaccia a riga di comando
Concetti generali su Matlab e finestra dei comandi
Matlab è fondamentalmente 3 cose: Linguaggio di programmazione, Calcolatrice scientifica e Ambiente.
grafico-Matlab non opera con numeri (scalari) ma con matrici: i vettori e gli scalarivengono considerati come casi particolari di matrici
Concetti generali sulla scrittura dei programmi
Variabili e assegnazioni di valori
- Concetto di variabile: la variabile è rappresentata da una stringa la cui composizione deve seguire delle regole (Lo spazio non è permesso, deve iniziare con una lettera dell'alfabeto, le lettere maiuscole e minuscole sono considerate diverse ("case sensitive"), le keyword non possono essere usate come nomi di variabili)
- Segno "="
Tipi di dati
- Si definisce tipo di dato un nome che indica l'insieme di valori che una variabile, o il risultato di un'espressione, possono assumere e le operazioni che su tali valori si possono effettuare
- Variabili "tipizzate" e "non tipizzate"
- Tipizzazione debole o dinamica
- Tipizzazione forte
- Conversione di tipo o "typecast"
Script
Commenti (simbolo %): sono delle
informazioni aggiuntive che non vengono considerate dal compilatore/interprete
Comandi multipli nella stessa riga
Caratteri e codifica
Caratteri
Codifica ASCII
Tipi numerici in Matlab
Runtime, intmin e intmax
Capitolo 7
La rappresentazione dei numeri reali: Floating e Fixed Point
Fixed Point
Passo: corrisponde alla risoluzione del numero in questione
Una parte delle cifre è dedicata alla rappresentazione della parte intera (ncifre) e la rimanente alla parte frazionaria (m cifre), ricordando che bisogna destinare un posto per il segno. La posizione della virgola è fissa
Floating Point
Alcune cifre vengono dedicate a rappresentare un esponente della base che indica l'ordine di grandezza del numero rappresentato: "notazione scientifica". La posizione della virgola è mobile.
Svantaggi della virgola fissa: non rappresenta bene numeri frazionari molto grandi/molto piccoli
I numeri reali "n" vengono, in tal modo, rappresentati con una coppia di
Numeri<m,e> dove m corrisponde alla mantissa, o significante, ed e corrisponde all'esponente intero-Limitazioni della virgola mobile: intervalli limitati e errori diarrotondamento-Overflow (Sconfinamento in intervalli numerici non consentiti) e Underflow(viceversa)-IEEE 754 o "IEEE standard for binary floating arithmetic"Standard IEEE 754-E' un format non proprietario, ossia non dipendente dal calcolatore-Precisione semplice a 32 bit-Precisione doppia a 64 bit-Esponente: è rappresentato in "eccesso" 127, detta anche "polarizzazione" o"bias"-La rappresentazione in "eccesso 127" significa che al vero esponente è statoaggiunto il valore 127, e dunque per ottenere l'esponente originale bisognasottrargli il valore 127Numeri normalizzati e denormalizzati-I numeri normalizzati sono i numeri in cui l'esponente è diverso da zero e la mantissa risulta normalizzata tra 1 e 2. E' implicito l'1.quindi tutti e 23 ibit vengono utilizzati-I numeri denormalizzati sono quelli in cui l'esponente è uguale a zero e la mantissa risulta normalizzata tra 0 e 1. E' implicito lo 0, quindi tutti e 23 ibit vengono utilizzati Overflow e Underflow-L'esito di un'operazione può essere troppo grande per essere contenuto in un registro (e lo chiameremo "overflow") oppure troppo piccolo (e lo chiameremo "underflow") Capitolo 8 Vettori e Matrici-Ogni tipo numerico definito in Matlab è una matrice di dimensioni n x m. Uno scalare è un caso particolare della matrice in cui n=1 ed m=1 -Array: "Un insieme di dati omogeneo organizzato in maniera che ciascun elemento (dato) è identificato univocamente (tipicamente da un indice)" -Scalare: array di un unico elemento 1 x 1 -Vettore: array monodimensionale (m x 1 o 1 x n) -Matrice: array bidimensionale (m x n) Vettori-I vettori sono disposti su una riga o su una colonna e ciascunUn elemento del vettore ha due attributi separati e distinti che lo rendono univoco: Valore e PosizioneMatrice.
La PosizioneMatrice è una tabella bidimensionale di valori, gli elementi sono disposti in righe e colonne e le dimensioni sono m x n dove m è il numero di righe mentre n è il numero di colonne.
Operazioni sui vettori:
- Creare un vettore
- Determinare la dimensione del vettore
- Estrarre dati dal vettore tramite gli indici
- Ridurre un vettore
- Calcoli matematici e logici sui vettori
Creare un vettore:
- Creazione diretta e creazione automatica
- Creazione automatica: Range di valori, valori equamente distribuiti e valori casuali oppure 0 e 1
- Funzioni definite in Matlab: zeros(1,N), ones(1,N), rand(1,N)
Vettori e matrici: dimensioni
Tre funzioni "built-in": size(A) restituisce un vettore contenente due quantità: numero di righe e numero di colonne, length(a) restituisce il valore massimo tra le dimensioni della matrice (righe e colonne), se è un vettore coincide con la sua lunghezza.
numel(A) restituisce il numero degli elementi (per una matrice è il prodotto righe per colonne). Funzione max e min Indicizzare un vettore In Matlab gli indici di un vettore iniziano dal valore 1. v(index) restituisce l'elemento (o gli elementi) alla(e) posizione(i) specificata(e) dal valore index. v(index) = value modifica gli elementi alla(e) posizione(i) specificata(e) dall'indice assegnandogli il valore "value". L'indice può essere a sua volta un vettore, in tal caso si chiama vettore indice. Funzione round: converte i numeri in valori interi. Lo stesso procedimento che esegue il vettore indice si può fare direttamente senza passare per un vettore indice intermedio. Regole per i vettori indici: Il vettore indice può avere qualsiasi lunghezza, deve contenere solo i 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(vettore). - In scrittura,tutti i valori dell'indice devono essere 1<=elemento Due operazioni: 1. Sostituire degli elementi in un vettore 2. Aumentare le dimensioni Prima regola: non si può accedere ad una componente inesistente Seconda regola: la sostituzione di valori allocati va eseguita direttamente Terza regola: se si prova ad usare una componente non ancora allocata essa verrà automaticamente allocata e le componenti esistenti tra l'ultima assegnata in precedenza e la nuova verranno a loro volta create e poste al valore zero Indici logici: In lettura vengono restituiti solo gli elementi corrispondenti al valore logico "true"; in fase di sostituzione vengono sostituiti solo gli elementi corrispondenti all'indice con valore logico "true" I valori logici non sono valori numerici Ridurre le dimensioni di un vettore (shortening): Per evitare di gestire, in determinate fasi, quantità di memoria eccessiva allora può convenire modificare le dimensioni deivettori-Eliminare un elemento è ben diverso che metterlo al valore zero
Operatore vuoto, non occupa spazio
Creare un vettore colonna-Il vettore colonna si crea usando il punto e virgola al posto della virgola o dello spazio
Non è possibile utilizzare l'operatore ":" , allora bisogna ricorrere ad un piccolo trucco: si crea un vettore riga e si "traspone" tramite apposito operatore (apice)
Trasposizione significa trasformare un vettore riga in un vettore colonna e viceversa
Operazioni sui vettori-Due tecniche sono specifiche per gli array in generale ed i vettori in particolare: 1.Concatenazione 2.Slicing (generalized indexing)
Operazioni aritmetiche-Si aggiungono nuovi operatori che devono tenere conto di regole specifiche per vettori e matrici-L'operazione somma tra un vettore ed uno scalare si riduce a sommare il valore scalare ad ogni singola componente del vettore-L'operatore di moltiplicazione è indicato come ".*" ed anche in
media dei valori del vettore. -Funzione "max(v)" e "min(v)" prendono in ingresso un vettore e restituiscono il valore massimo e minimo presente nel vettore. -Funzione "length(v)" restituisce la lunghezza del vettore. -Funzione "size(A)" restituisce le dimensioni della matrice A. -Funzione "zeros(n)" restituisce un vettore di zeri di lunghezza n. -Funzione "ones(n)" restituisce un vettore di uni di lunghezza n. -Funzione "eye(n)" restituisce una matrice identità di dimensione n.e operatore di modulo. Restituisce il resto della divisione tra due numeri. Ad esempio, mod(7, 3) restituisce 1 perché il resto della divisione di 7 per 3 è 1. -Funzione "abs(v)": restituisce il valore assoluto di un numero. Ad esempio, abs(-5) restituisce 5. -Funzione "sqrt(v)": restituisce la radice quadrata di un numero. Ad esempio, sqrt(9) restituisce 3. -Funzione "exp(v)": restituisce il valore di e elevato alla potenza di un numero. Ad esempio, exp(2) restituisce il valore approssimato di e^2. -Funzione "log(v)": restituisce il logaritmo naturale di un numero. Ad esempio, log(10) restituisce il logaritmo naturale di 10. -Funzione "log10(v)": restituisce il logaritmo in base 10 di un numero. Ad esempio, log10(100) restituisce 2 perché 10^2 è uguale a 100. -Funzione "sin(v)", "cos(v)" e "tan(v)": restituiscono rispettivamente il seno, il coseno e la tangente di un angolo in radianti. Ad esempio, sin(pi/2) restituisce 1 perché il seno di pi/2 è 1. -Funzione "asin(v)", "acos(v)" e "atan(v)": restituiscono rispettivamente l'arco seno, l'arco coseno e l'arco tangente di un numero. Ad esempio, asin(1) restituisce pi/2 perché il seno di pi/2 è 1. -Funzione "rand(v)": restituisce un numero casuale compreso tra 0 e 1. Ad esempio, rand() restituisce un numero casuale compreso tra 0 e 1. -Funzione "randi(v)": restituisce un numero casuale intero compreso tra 1 e il valore specificato. Ad esempio, randi(10) restituisce un numero casuale intero compreso tra 1 e 10. Queste sono solo alcune delle funzioni matematiche disponibili in MATLAB. Puoi utilizzare queste funzioni per eseguire calcoli complessi e manipolare i dati in modo efficiente.