Codifica-Decodifica DTMF
|
|
|
- Vanessa Rosi
- 7 anni fa
- Visualizzazioni
Transcript
1 1. DESCRIZIONE DEL PROBLEMA "Codifica-Decodifica DTMF" Function file deve implementa: 1. La codifica DTMF di un numero di telefono di 7 cifre. Il segnale generato è costituito per ogni cifra da un tono di 0.5sec. seguito da un silenzio di 0.2sec. La frequenza di campionamento è Fs=8000Hz. Parametri di input: nume ro (stringa di caratteri relativa al numero) Parametri di output: tone (vettore contenente il segnale discreto che rappresenta il numero) 2. La decodifica di un segnale che individua un numero di telefono di 7 cifre. Il segnale è composto da un tono di 0.5sec. per ogni cifra seguito da un silenzio di 0.2sec. La frequenza di campionamento è Fs=8000Hz. Parametri di input: tone (vettore contenente il segnale discreto che rappresenta il numero) Parametri di output: numero (stringa di caratteri relativa al numero) 2. DESCRIZIONE DELL ALGORITMO L elaboratosi articola in due function : DTMFdec.m DTMF.m E di uno script per effettuare il test delle due function (TestDTMF.m). 2.1 function " TestDTMF.m" Lo script da la possibilità di lanciare le due function con un numero di 7 cifre. clear; clc; d = input ('inserisci un numero di 7 cifre [ ]\n'); if isempty( d) numero = ' '; else numero = d; disp (['numero da codificare = ' numero]); %ottengo la codifica del numero tone = DTMF( numero); soundsc( tone, 8000); %riottengo il numero decodificato decoded_number= DTMFdec( tone); disp (['numero decodificato = ' decoded_number]); %controlla che il numero originale ed il decodificato siano uguali assert( all( numero== decoded_number )); Guerra Stefano Pagina 2
2 2.2 function " DTMF.m" Questa Function realizza la codifica DTMF di un numero di 7 cifre produco un output sonoro ed un grafico dello spettro equivalente alle frequenza codificanti il tono. SINTASSI: tone = DTMF(number) function tono = DTMF( numero) % Controllo sul numero di parametri in ingresso if ( nargin< 1) error ('La funzione prevede in ingresso un solo parametro' ); if length( numero) ~= 7 error ('Il numero in ingresso deve essere composto da 7 cifre' ); symbols = ['1' '2' '3' 'A'; '4' '5' '6' 'B'; '7' '8' '9' 'C'; '*' '0' '#' 'D']; gbf = [ ]; %Gruppo a bassa frequenza faf = [ ]; %Gruppo ad alta frequenza lnum = length( numero); Fc = 8000 ; %Frequenza di campionamento 8 khz N = 0.5* Fc ; %Numero di campioni equivalenti %ad un segnale di durata 0.5 sec alla freq di 8 khz t = 0: 1/ Fc:( N- 1)/ Fc ; % [0:1/Fc:0.4999] dpit = 2* pi* t ; %Definizioni di costanti utilizzate in seguito Lun_Tono = Fc* 0.5 ; %Lunghezza del tono Lun_Tono_Pausa = Fc* 0.7 ; %Lunghezza del tono compreso di intervallo silenzioso Lun_Tot_Toni = Lun_Tono_Pausa * lnum ; %Lunghezza del segnale complessivo di 7 toni tono = zeros( 1, Lun_Tot_Toni); %A partire dalle frequenze previste dalla codifica DTMF si realizza una %matrice che ad ogni simbolo associa la coppia prevista di frequenze. for i= 1: lnum %Determino le frequenze corrispondenti ai caratteri della stringa in %ingresso [ a b] = find( symbols == numero( i)); if ( isempty( a)) error ('Il numero inserito contiene caratteri non validi' ); singletone = sum( sin([ gbf( a); faf( b)]* dpit)); %Individuo il numero del campione a partire dal quale comincia il tono tindex = round(( i- 1)* Lun_Tono_Pausa); %Genero la sequenza di toni intervallati dalla pausa di 0.2 secondi Guerra Stefano Pagina 3
3 tono(( tindex+ 1):( tindex+ Lun_Tono )) = singletone; %Ascolto del segnale ottenuto. soundsc( tono, Fc); %Visualizziamo la curva del segnale sull'asse dei tempi tonetime = 0: 1/ Fc:( Lun_Tot_Toni - 1)/ Fc; figure( 1); plot( tonetime, tono); title ('signal'); xlabel ('sec'); Parametri di ingresso: numero: stringa di caratteri contenente la sequenza da codificare. Parametri di uscita: tono: segnale sonoro corrispondente alla codifica DTMF della sequenza in ingresso. Il segnale generato è costituito: per ogni cifra da un tono di 0.5 sec seguito da un silenzio di 0.2 sec La frequenza di campionamento è Fs=8000 Hz. Le frequenze associate ai tasti della tastiera di un comune telefono sono mostrate qui di seguito: 1209 Hz 1336 Hz 1477 Hz 1633 Hz ABC DEF KEY 697 Hz A _ _ GHI JKL MNO KEY 770 Hz B _ _ _ _ PQRS TUV WXYZ KEY 852 Hz C _ _ _ _ KEY 941 Hz * 0 # D _ _ _ _ 2.3 funcion " DTMFdec.M " Questa Function realizza la conversione di un segnale sonoro in una sequenza di 7 cifre in base alla codifica DTMF. SINTASSI: numero = DTFMdec(toni) Parametri di ingresso: toni: segnale sonoro corrispondente alla codifica DTMF di una sequenza di cifre. Guerra Stefano Pagina 4
4 numero: numero di cifre corrispondente alla decodifica del segnale sonoro. function numero = DTMFdec( toni) %Controllo sul numero di parametri in ingresso if ( nargin< 1) error ('La funzione prevede in ingresso un solo parametro' ); if isvector( toni) == 0 error ('Il parametro in ingresso deve essere un vettore' ); Fc = 8000 ; %Frequenza di campionamento 8 khz Lun_Tono = Fc* 0.5 ; %Lunghezza del tono Lun_Tono_Pausa = Fc* 0.7 ; %Lunghezza del tono compreso di intervallo silenzioso Lun_Tot_Toni = length( toni ); %Lunghezza del segnale complessivo di 7 toni NumDigit = Lun_Tot_Toni / Lun_Tono_Pausa ; %Numeri digitati gbf = [ ]; %Gruppo a bassa frequenza faf = [ ]; %Gruppo ad alta frequenza original_f = [ gbf faf]; symbols = ['1' '2' '3' 'A'; '4' '5' '6' 'B'; '7' '8' '9' 'C'; '*' '0' '#' 'D']; %Inizializzazione di alcuni elementi utilizzati più avanti numero = zeros( 1, NumDigit); freqtono = ( 0:( Lun_Tono / 2))* Fc/ Lun_Tono ; %Vettore delle frequenze %A ciascun passo del ciclo lavoriamo su un tono distinto Figure(2); for i = 1 : NumDigit %Separo ciascun tono della sequenza tindex = round(( i- 1)* Lun_Tono_Pausa); singletone = toni(( tindex+ 1):( tindex+ Lun_Tono )); %Calcolo la dft di ciascun tono dfttono = fft( singletone ); %Visualizza il grafico dell'ampiezza della DFT figure( 1); amptono = abs( dfttono( 1:( Lun_Tono / 2)+ 1)); subplot( NumDigit, 1, i), stem( freqtono, amptono); set( gca, 'XTick', original_f, 'XTickLabel', original_f, 'Xlim', [ ]); %Individuo le frequenze in corrispondenza delle quali ho le componenti %di massima ampiezza. freqsfound = freqtono( amptono > 0.5* max( amptono)); Guerra Stefano Pagina 5
5 %Confronto le frequenze individuate con quelle previste dalla codifica %DTMF, valutandone la distanza relativa. distanza = abs([ gbf - min( freqsfound); faf - max( freqsfound)]); %Alle frequenze a distanza minima associamo una coppia di indici, che %poi utilizzeremo per individuare un simbolo nella matrice symbol. [ mini index] = min( distanza, [], 2); %Ad ogni passo dell'algoritmo aggiungo il valore così individuato alla %sequenza parziale. numero( i) = symbols( index( 1), index( 2)); xlabel ('Frequenze [Hz]'); title (['DFT del tono ' num2str( i ) ' il tasto premuto è: ' symbols( index( 1), index( 2 ))]); % num2str converte numeri in stringhe %Convertiamo la sequenza ottenuta in una stringa di caratteri. numero = char( numero); 3. ECCEZIONI PREVISTE Abbiamo previsto tre indicatori di errore: Numero errato di parametri di ingresso: >> tono = DTFM();??? Error using ==> number2tone at 19 La funzione prevede in ingresso un solo parametro Dimensione errata del parametro in ingresso: >> tono = DTFM('081');??? Error using ==> number2tone at 23 Il numero in ingresso deve essere composto da 7 cifre Numero in ingresso composto da cifre non previste: >> tone = DTFM('081223P');??? Error using ==> number2tone at 59 Il numero inserito contiene caratteri non validi. 4. ESEMPI D USO Effettuiamo un test con i numeri di default presentandone l output: Guerra Stefano Pagina 6
6 Guerra Stefano Pagina 7
Page Rank. Guerra Stefano. 1. DESCRIZIONE DEL PROBLEMA "Page Rank" 2. DESCRIZIONE DELL ALGORITMO. Pagina 2
1. DESCRIZIONE DEL PROBLEMA "" Realizzare un Function file che implementa (l algoritmo PageRank di Google per l ordinamento dei siti web). Parametri di input: G matrice sparsa di adiacenze relativa ad
METODI ITERATIVI DI JACOBI E GAUSS-SEIDEL
1. DESCRIZIONE DEL PROBLEMA Function file che implementa: L algoritmo di Jacobi o di Gauss Seidel per la risoluzione di un sistema lineare Ax=b con A sparsa (generata dall utente con il comando sparse).
MATLAB: Una veloce introduzione (Parte II)
MATLAB: Una veloce introduzione (Parte II) Author: Luca Albergante 1 Dipartimento di Matematica, Università degli Studi di Milano 14 Marzo 2011 L. Albergante (Univ. of Milan) MATLAB 14 Marzo 2011 1 / 14
MATLAB I/O. Informatica B - A.A. 2012/2013 ACQUISIZIONE DI INPUT DA TASTIERA
MATLAB I/O Informatica B - A.A. 2012/2013 ACQUISIZIONE DI INPUT DA TASTIERA Funzione input valore = input( inserisci un valore ); Matlab stampa a video la stringa inserisci un valore ed aspetta di ricevere
Codifica di Huffman e Lempel-Ziv-Welch A L B E R T O B E L U S S I A N N O A C C A D E M I C O /
Codifica di Huffman e Lempel-Ziv-Welch 1 A L B E R T O B E L U S S I A N N O A C C A D E M I C O 2 0 1 0 / 2 0 1 1 Tipi di compressione Senza perdita (lossless): permettono di ricostruire perfettamente
Esercitazioni con GNU Octave
appendice A Esercitazioni con GNU Octave GNU Octave può essere scaricato dalla seguente pagina: https://www.gnu.org/software/octave/download.html L elenco dei concetti, delle funzioni e degli operatori
Prove d esame Esercizi con Matlab
Prove d esame Esercizi con Matlab Andrea Corli 16 settembre 2015 Sono qui raccolti alcuni esercizi relativi a Matlab assegnati nelle prove d esame (dal 2011 al 2014) del Corso di Analisi Matematica I (semestrale,
1) Matlab e simulazione. 2) Esempi di utilizzo. Mauro De Sanctis corso di Informazione e Codifica Università di Roma Tor Vergata
Argomenti della Lezione 1) Matlab e simulazione 2) Esempi di utilizzo 1 Mauro De Sanctis corso di Informazione e Codifica Università di Roma Tor Vergata Matlab è un sistema di programmazione ad alto livello
CT06. Comunicatore telefonico PSTN. Manuale utente IS1204-AB
Comunicatore telefonico PSTN IS1204-AB Manuale utente Sommario degli argomenti 1.0 Descrizione LED e tasti... 3 1.1 Descrizione LED... 3 1.2 Descrizione tasti... 3 2.0 Scelta lingua visualizzazione stato
Caratteri e stringhe
Caratteri e stringhe Caratteri Dato che un computer può memorizzare esclusivamente sequenze di bit, per memorizzare un carattere (e quindi testi) è necessario stabilire una convenzione che associa a un
SG4F_S4T ( Versione 01.07/13 )
DISPOSITIVO ELETTRONICO PROGRAMMABILE GENERATORE STEP PER 4 MOTORI PASSO-PASSO ( 4 percorsi uguali + 4 controlli registro indipendenti ) ( Versione 01.07/13 ) Caratteristiche tecniche generali Alimentazione
Tecnologie Multimediali a.a. 2017/2018. Docente: DOTT.SSA VALERIA FIONDA
Tecnologie Multimediali a.a. 2017/2018 Docente: DOTT.SSA VALERIA FIONDA Il suono IL SUONO Il suono è quello stimolo prodotto sul nostro orecchio dalla vibrazione di un corpo in oscillazione che si propaga
Corso di Calcolo Numerico C.d.L in Ingegneria Aerospaziale e Meccanica a.a 2016/2017. Prof. Pasqua D Ambra. Appunti di Matlab : grafica
Corso di Calcolo Numerico C.d.L in Ingegneria Aerospaziale e Meccanica a.a 2016/2017 Prof. Pasqua D Ambra Appunti di Matlab : grafica Modifica di un oggetto grafico da programma Si possono modificare le
Comunicazioni Elettriche Esercizi
Comunicazioni Elettriche Esercizi Alberto Perotti 9 giugno 008 Esercizio 1 Un processo casuale Gaussiano caratterizzato dai parametri (µ = 0, σ = 0.5) ha spettro nullo al di fuori dellintervallo f [1.5kHz,
MATLAB - Programmazione - 2. Antonino Polimeno
MATLAB - Programmazione - 2 Antonino Polimeno [email protected] Manipolazione di matrici - 1 Input di matrici Definizione manuale: A = [1, 2, 3; 7, 8, 9] Generazione da funzioni Lettura da file
Curtarolo (Padova) Italy. Guida alla programmazione della centrale GUARDIAN
Curtarolo (Padova) Italy Guida alla programmazione della centrale GUARDIAN GENERALITÁ Per entrare in programmazione si deve digitare il codice installatore (default ) e attendere la comparsa della lettera
Elaborazione numerica dei segnali
POLITECNICO DI TORINO Elaborazione numerica dei segnali Progetto di un filtro FIR Fiandrino Claudio Matricola: 138436 18 giugno 21 Relazione sul progetto di un filtro FIR Descrizione del progetto L obbiettivo
LTSPICE IV: FORME D'ONDA SU MATLAB 1
Silvio Navaretti (Fedhman) LTSPICE IV: FORME D'ONDA SU MATLAB 19 December 2016 We can lick gravity, but sometimes the paperwork is overwhelming. - Wernher von Braun Introduzione Talvolta è comodo poter
Esercitazione di Reti degli elaboratori
Esercitazione di Prof.ssa Chiara Petrioli Christian Cardia, Gabriele Saturni Cosa vedremo in questa lezione? Gli Array Gli array multidimensionali Le stringhe I puntatori Esercizi Pagina 1 Gli Array Definizione
I CARATTERI E LE STRINGHE
I CARATTERI E LE STRINGHE IL CODICE ASCII Per memorizzare i simboli grafici corrispondenti ai caratteri bisogna associare un numero intero a ciascuno di essi Il codice ASCII / æski/ (American Standard
Codifica di canale. (dalle dispense e dalle fotocopie) Trasmissione dell Informazione
Codifica di canale (dalle dispense e dalle fotocopie) Codici lineari a blocchi Un codice lineare (n,k) è un codice che assegna una parola lunga n ad ogni blocco lungo k. Si dice che il codice abbia un
ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia)
ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia) Scrivere una funzione per definire se un numero è primo e un programma principale minimale che ne testa la funzionalità. #include
L'Informazione e la sua Codifica. Maurizio Palesi
L'Informazione e la sua Codifica Maurizio Palesi 1 Obiettivo Il calcolatore è una macchina digitale Il suo linguaggio è composto da due soli simboli Gli esseri umani sono abituati a comunicare utlizzando
Esercizi. Filtraggio
Politecnico di Milano Esercizi Preparazione alla prima prova intermedia Filtraggio L utente inserisce un array di numeri reali non negativi (un numero negativo indica la fine della fase di inserimento)
Teoria e pratica I formati sonori
ACQUISIZIONE ED ELABORAZIONE DEI SUONI Teoria e pratica I formati sonori L. De Panfilis - G. Manuppella La digitalizzazione La digitalizzazione di oggetti legati a fenomeni di tipo analogico, avviene attraverso
Esercitazione 1 Conversione di base
Esercitazione 1 Conversione di base A.A. 2017-18 Esercizio 1 (M) Scrivere un programma che esegua la conversione di un numero reale qualunque da base 10 a base β {2,..., 16}, utilizzando gli M-function
Icom IC-U200T Programmazione 2010
Icom IC-U200T Programmazione 2010 [email protected] Tastiera e tastiera estesa La serie di ricetrasmettitori civili Icom IC-x200T possiedono una tastiera divisa in due sezioni, una di sei tasti alla
TEORIA DELL INFORMAZIONE ED ENTROPIA FEDERICO MARINI
TEORIA DELL INFORMAZIONE ED ENTROPIA DI FEDERICO MARINI 1 OBIETTIVO DELLA TEORIA DELL INFORMAZIONE Dato un messaggio prodotto da una sorgente, l OBIETTIVO è capire come si deve rappresentare tale messaggio
Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal
Algoritmi, Strutture Dati e Programmi : Programmazione in Pascal Prof. Alberto Postiglione AA 2007-2008 Università degli Studi di Salerno Il Linguaggio di Programmazione Pascal Esistono molti linguaggi
Richiami teorici sull analisi del segnale
7 6 5 4 3 2 9 8 7 6 5 4 3 2 Richiami teorici sull analisi del segnale Trasformata discreta di Fourier DFT viene impiegata per analizzare segnali discreti (tipicamente provenienti da un operazione di campionamento)
Analogico vs digitale
Analogico vs digitale Informazione classificatoria e più che classificatoria Informazione classificatoria: è questo, ma avrebbe potuto essere quest altro altro. Informazione più che classificatoria: riconoscere
Algoritmi stabili e instabili
Algoritmi stabili e instabili Laboratorio di Calcolo Numerico 13 Marzo 2018 Vettori in MATLAB Finora abbiamo pensato alle variabili utilizzate come semplici valori numerici (variabili scalari). In realtà,
Dati aggregati. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica - in breve: Definizione di tipi Array Stringhe Strutture
Laboratorio di Calcolo Numerico Laboratorio 3: Algoritmi stabili e instabili, Bisezione
Laboratorio di Calcolo Numerico Laboratorio 3: Algoritmi stabili e instabili, Bisezione Claudia Zoccarato E-mail: [email protected] Dispense: Moodle Dipartimento ICEA 22 Marzo 2017 Vettori in
