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

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

FONDAMENTI DI INFORMATICA

FONDAMENTI DI INFORMATICA

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

Complementi di Matematica e Calcolo Numerico A.A Laboratorio

In realtà i segnali con i quali dobbiamo confrontarci più frequentemente sono limitati nel tempo

Segnali Numerici. Segnali Continui

8 Introduzione MATLAB

SEGNALE ANALOGICO. Un segnale analogico ha un ampiezza che varia in maniera continua nel tempo

Fondamenti di Informatica e Programmazione

Analisi armonica su dati campionati

8 Introduzione MATLAB

Introduzione a MATLAB

Fondamenti di Informatica

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

Strutture di controllo condizionali in Matlab

Introduzione al MATLAB c Parte 1 Variabili ed array

Introduzione al MATLAB c Parte 1 Variabili ed array

Laboratorio di Calcolo Numerico Laboratorio 8: Vettori e Matrici

Introduzione a MATLAB

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

Campionamento. Campionamento: problema

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

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

Elementi di informatica musicale Conservatorio G. Tartini a.a Sintesi del suono. Sintesi del suono

MATLAB parte II. Array

FONDAMENTI DI INFORMATICA

INTRODUZIONE A MATLAB

Conversione analogico-digitale

Elenco dei simboli 9. Prefazione 10


Campionamento e quantizzazione

Algoritmi stabili e instabili

Progetto dei Sistemi di Controllo Digitali. Docente: Prof. Francesco Amato

LSS ADC DAC. Piero Vicini A.A

Rappresentazione digitale del suono

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


Il tema proposto può essere risolto seguendo due ipotesi:

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

Università degli Studi di Ferrara

CAMPIONAMENTO CATENA ELETTROACUSTICA DIGITALE, CAMPIONAMENTO, QUANTIZZAZIONE

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

FONDAMENTI DI INFORMATICA

ELETTRONICA II. Prof. Dante Del Corso - Politecnico di Torino. Parte F: Conversione A/D e D/A Lezione n F - 1:

Dispense del corso di Elettronica L Prof. Guido Masetti

Il primo programma C++

Introduzione a MATLAB

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

INGEGNERIA E TECNOLOGIE DEI SISTEMI DI CONTROLLO Il teorema di Shannon

Prof. Carlo Rossi DEIS - Università di Bologna Tel:

8 Introduzione MATLAB

D SISTEMI DI ELABORAZIONE DIGITALE DEI SEGNALI

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

Codifica dei segnali audio

Tipi di dato primitivi

Elaborazione numerica dei segnali: analisi delle caratteristiche dei segnali ed operazioni su di essi. Mauro Biagi

Sistemi LTI: conversione da tempo continuo a tempo discreto per campionamento

FONDAMENTI DI INFORMATICA

Ingegneria dell Informazione D SISTEMI DI ELABORAZIONE DIGITALE DEI SEGNALI. Analisi Sistemistica di soluzioni analogiche/digitali

Introduzione a Matlab

Introduzione ai sistemi di trasmissione dell Informazione

Slide del corso di. Controllo digitale

Dispense del corso di Elettronica L Prof. Guido Masetti

Page 1. Elettronica delle telecomunicazioni 2003 DDC 1. Politecnico di Torino Facoltà dell Informazione. Contenuti del Gruppo C

Corso di Laurea in Ingegneria Informatica (Laurea on Line)

Capitolo 4. Campionamento e ricostruzione

Lezione introduttiva

DFT con arduino. Laboratorio di Segnali e Sistemi. - Esercitazione -9 - Claudio Luci. Claudio Luci Laboratorio di Segnali e Sistemi Capitolo 9 1

Aritmetica in Floating Point

Fondamenti di Informatica T-1

Algebra di Boole X Y Z V. Algebra di Boole

Fondamenti di Informatica T-1

Fondamenti di Informatica

Esercizi sulla rappresentazione compatta di matrici sparse

Algebra di Boole Algebra di Boole

Modulo 1: Le I.C.T. UD 1.3c: La Codifica Digitale dei Suoni

Trasformata discreta di Fourier diunasequenzafinita: algoritmifft

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

Conversione analogico-digitale

Esperienza 9 (continua) Esperienza 10. Marco Vignati Laboratorio di Sistemi e Segnali

Controllo Digitale. Riassumendo. I sistemi di controllo digitale hanno alcuni vantaggi rispetto ai sistemi di controllo a tempo continuo:

Esercizio 1 (12 punti) Si consideri il segnale s(t) in figura e se ne calcoli la Trasformata Continua di Fourier. A vale 2 V e T è paria a 1 s.

ANALISI DI FOURIER. Segnali a Tempo Discreto:

Analizzatore di spettro. Generalità sull analisi spettrale. Analizzatori a scansione. Analizzatori a doppia conversione. Analizzatore di spettro

Analisi dei segnali nel dominio delle frequenze 21/12/ /01/2007

La Trasformata di Fourier

Il linguaggio JavaScript

SEGNALI STAZIONARI: ANALISI SPETTRALE

Transcript:

FONDAMENTI DI INFORMATICA Prof. Alfredo Accattatis ( accattatis@ing.uniroma2.it ) Tutor: prof. Venturino Taggi ( taggi@ing.uniroma2.it )

Fondamenti di Informatica a.a. 16/17- 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 (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. 16/17- 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. 16/17- A. Accattatis 4 Esempio Verifichiamo che length(a) restituisce il valore massimo tra le dimensioni >> confronto = length(a)==max(s) confronto = 1 >> whos confronto Name Size Bytes Class Attributes confronto 1x1 1 logical >> length(a) ans = 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. 16/17- A. Accattatis 5 >> A=1:3:12 A = 1 4 7 10 >> A(1) %legge primo elemento ans = 1 >> B=[2,4] B: vettore indice B = 2 4 >> A(B) ans = 4 10

Fondamenti di Informatica a.a. 16/17- 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) ans = -1-1 1-1 -2 >> A(2:2:10) ans = -1-1 1-1 -2

Fondamenti di Informatica a.a. 16/17- 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. 16/17- A. Accattatis 8 Esempio >> B = [-1 0 1 2 3]; >> C=[1 2 4 5 1 1]; >> B(C) ans = -1 0 2 3-1 -1

Fondamenti di Informatica a.a. 16/17- 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. 16/17- 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. 16/17- 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. 16/17- 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) ans = 1 7 99 >> A(mask)=[66,66,66]; >> A A = 66 0 66 66 0 0 99

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

1-20 Fondamenti di Informatica a.a. 16/17- A. Accattatis Operazioni aritmetiche(continued) >> A.* B % moltiplicazione elemento per elemento ans = -2 0 7 2 9 >> A * B % moltiplicazione tra matrici!!??? Error using ==> mtimes Inner matrix dimensions must agree. >> A * B ans = 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. 16/17- A. Accattatis Operazioni logiche >> A = [2 5 7 1 3]; >> B = [0 6 5 3 2]; >> A >= 5 ans = 0 1 1 0 0 >> A >= B ans = 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. 16/17- A. Accattatis Operazioni logiche (continued) >> A = [true true false false]; >> B = [true false true false]; >> A & B ans = 1 0 0 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. 16/17- A. Accattatis Footnote: la funzione find Continuando dal codice nella slide precedente: >> C = find(b) ans = [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. 16/17- 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. 16/17- A. Accattatis Concatenazione MATLAB consente la costruzione di un nuovo vettore (matrice), concatenando più vettori: A = [B C D... X Y Z] I singoli elementi possono essere vettori (matrici) definiti come costanti o variabili, e la lunghezza di A sarà la somma delle lunghezze 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. 16/17- 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. 16/17- 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

Fondamenti di Informatica - Alfredo Accattatis 28 Vi ricordate la slide introdotta nelle prime lezioni che accennava al. TEOREMA del CAMPIONAMENTO?

Fondamenti di Informatica - Alfredo Accattatis 29 La risposta è: Teorema del campionamento! (Shannon Nyquist) Lo tratteremo in maggior dettaglio. Tramite esso è possibile tradurre qualsiasi grandezza «del mondo esterno» in un formato comprensibile al mondo degli elaboratori (numeri codificati in binario) E fondamentale ed ha reso l Informatica uno strumento universale

Fondamenti di Informatica - Alfredo Accattatis 30 Spettro di un segnale Un segnale periodico «generale» (non sinusoidale) risulta composto da una sommatoria di segnali sinusoidali. Ossia esso può essere matematicamente rappresentato come una somma (infinita) di segnali sinusoidali, a diverse ampiezze e frequenza. Sviluppo in serie di Fourier:

Fondamenti di Informatica - Alfredo Accattatis 31 Spettro di un segnale Le sinusoidi risultano essere, secondo questa scomposizione, dei segnali «atomici» non scomponibili in ulteriori segnali. Sono le ARMONICHE Si definisce SPETTRO DI UN SEGNALE o rappresentazione nel dominio della frequenza, il grafico di ampiezza e fase ottenuto scomponendo il segnale nelle sue componenti basilari detta anche BANDA del segnale

Esempio : onda quadra Fondamenti di Informatica - Alfredo Accattatis 32

Armoniche componenti Fondamenti di Informatica - Alfredo Accattatis 33

Armoniche componenti Fondamenti di Informatica - Alfredo Accattatis 34

Fondamenti di Informatica - Alfredo Accattatis 35 Banda di un segnale, Spettro

Fondamenti di Informatica - Alfredo Accattatis 36 Trasformata di FOURIER E una trasformazione matematica che consente di ricavare, dato il segnale nel «dominio del tempo» s(t) la funzione X(f), ossia ricavare lo SPETTRO del segnale, ossia la rappresentazione nel dominio della frequenza X(f) = F(s(t)) Si usa un algoritmo veloce, detto FFT Fast Fourier Transform. Vale per segnali tempo discreto:

Fondamenti di Informatica - Alfredo Accattatis 37

Fondamenti di Informatica - Alfredo Accattatis 38 Teorema del campionamento Ora possiamo finalmente enunciare il teorema del campionamento Dato un segnale analogico tempo continuo a banda limitata, esso può essere completamente rappresentato (ed eventualmente ricostruito) da un segnale tempo discreto da esso derivato per tramite di un operazione di campionamento

Fondamenti di Informatica - Alfredo Accattatis 39 Teorema del campionamento sia X(t) un segnale a banda limitata, ossia la trasformata di Fourier X(f) sia uguale a zero per f > B (dove B è la banda del segnale). Ossia, sia X(t) un segnale il cui contenuto armonico vari da zero a un massimo (per esempio da 0 a 20000 Hz) sia la frequenza di campionamento maggiore od almeno uguale al doppio di B, ossia si prelevino campioni del segnale con una frequenza almeno doppia di quella della massima frequenza presente nel segnale (ossia B). Allora (tesi).

Fondamenti di Informatica - Alfredo Accattatis 40 Teorema del campionamento il segnale X(t) è rappresentato esaustivamente dai suoi campioni (senza errori) il segnale può essere ricostruito con un filtro passa-basso avente frequenza di taglio Ft tale che B<Ft OPPURE il segnale X(t) può essere ricostruito a partire dai suoi campioni con lo sviluppo in serie definito dalla seguente relazione:

Fondamenti di Informatica - Alfredo Accattatis 41 Campionare (misura cadenzata):

Fondamenti di Informatica - Alfredo Accattatis 42

Quantizzazione Fondamenti di Informatica - Alfredo Accattatis 43

Fondamenti di Informatica - Alfredo Accattatis 44

Fondamenti di Informatica - Alfredo Accattatis 45 Quindi, il nostro segnale analogico originario è ora rappresentato da una serie di WORD (esempio 8 bit) 00101001 10001101 11101001 00101111 11101001

Fondamenti di Informatica - Alfredo Accattatis 46 Ricapitoliamo Il teorema del campionamento ci consente di «trasformare» in sequenze di BIT (numeriche) i segnali analogici del mondo esterno al computer Il segnale è rappresentato in maniera esaustiva dalle sequenze numeriche a meno di un errore dovuto al processo di campionamento e poi quantizzazione I circuiti che usiamo per effettuare fisicamente le trasformazioni si chiamano CONVERTITORI A/D (Analogico Digitale) indicati spesso con la sigla ADC. Il circuito che fa l operazione inversa, si chiama CONVERTITORI D/A (Digitale Analogico = DAC). In questo modo possiamo anche creare digitalmente un segnale (sintesi) e trasformarlo in segnale analogico. Esempio: MUSICA ELETTRONICA

Fondamenti di Informatica - Alfredo Accattatis 47 Circuito universale La trasformazione del segnale (funzione di trasferimento) DIPENDE DA UN ALGORITMO

Fondamenti di Informatica - Alfredo Accattatis 48 Filtro passa basso Elimina tutte le componenti di un segnale maggiori di una certa frequenza, detta frequenza di taglio Esempio di circuito analogico Ingresso : onda quadra, composta da tante sinusoidi Filtro PB: ha la proprietà fisica Uscita: una sola armonica Di far passare solo determinate frequenze Inferiori alla frequenza di taglio

Fondamenti di Informatica - Alfredo Accattatis 49

Fondamenti di Informatica - Alfredo Accattatis 50 Dunque: abbiamo matematicamente ottenuto l equivalente del comportamento fisico di: Con un ALGORITMO implementato in SOFTWARE! Cambiare l algoritmo equivale a cambiare il circuito