COMPENDIO GNU OCTAVE 3.8.1 Prefazione Il presente documento è stato creato per l'uso di Octave per il corso di “Elaborazione Elettronica dei Segnali (6CFU)” tenuto dal Prof. Ramponi durante l'anno accademico 2013/14. Nonostante buona parte delle istruzioni esposte siano valide per diverse versioni di Octave e per buona parte dei sistemi operativi Linux (specie per Ubuntu e suoi derivati), esse sono state verificate solo per Octave 3.8.1 nel sistema operativo Xubuntu 12.04. Il testo è rivolto a chi non è molto pratico di Linux, per cui gran parte dei comandi indicati posso essere già noti ad un utente abituale di questi sistemi operativi. L'autore di questo documento non garantisce sulla esatta correttezza del documento Si auspica che eventuali errori possano essere rivelati e corretti e il testo venga migliorato ed aggiornato per le versioni future di Octave. Assieme al compendio, è reso disponibile un'insieme di file .m funzionanti su Octave 3.6.4 che ricalcano per buona parte gli esercizi svolti a lezione (anche in tal caso, non si dà nessuna garanzia sui file nonostante il sottoscritto ricordi che funzionavano adeguatamente sulla vecchia versione). Nel caso incontriate dei problemi su Octave o vogliate fare segnalazioni, lascio disponibile il mio indirizzo mail. Alessandro Villani (email:[email protected]) 1.Installazione Esistono essenzialmente due metodi per installare octave: uno da repository, l'altro compilando da sorgente. Generalmente, installare da repository è più semplice rispetto alla compilazione .D'altro canto, nelle repository non è sempre disponibile l'ultima versione di Octave, presente nel sito https://www.gnu.org/software/octave/. Quanto segue si trova nella pagina web http://wiki.octave.org/Octave_for_Debian_systems. - Installazione da repository (per utenti Debian/Ubuntu) Nel caso in cui Octave non sia già presente nel Software Center occorre digitare prima: sudo apt-add-repository ppa:octave/stable sudo apt-add-repository ppa:octave/unstable sudo apt-get update # opzionale Una volta che il software è presente nel Software Center, allora si può istallare il programma con l'interfaccia grafica oppure da terminale con il comando: sudo apt-get install octave - Installazione da sorgente Il compito arduo è trovare tutti i pacchetti necessari per Octave (le dipendenze). Un modo semplice ma non sempre efficace è digitare da terminale: sudo apt-get build-dep octave Se tutto è andato bene, digitando: sudo ./configure && make && make install non appare nessun messaggio di errore e l'installazione è completata. 2. Pacchetti Octave Pacchetti Octave da scaricare Ai fini del corso, è necessario utilizzare almeno i pacchetti general, control, signal reperibili dal sito http://www.octave.sourceforge.net/ 2.1 Installazione pacchetto Per l'installazione di qualsiasi pacchetto è indispensabile avviare Octave con i permessi di root, tramite il comando: sudo octave in quanto si effettuano modifiche al di fuori della propria cartella utente (home/nome_utente). Esistono due modi per installare un pacchetto: il primo accede direttamente al repository di octave.sourceforge, il secondo installa un pacchetto già scaricato (particolarmente utile per installare versioni precedenti di un certo pacchetto). Modo 1: installazione tramite repository Come indicato nella pagina web http://www.octave.sourceforge.net/index.html, digitando: pkg install -forge NOME_DEL_PACCHETTO verrà installato il pacchetto più aggiornato nel repository e, dunque. in NOME_DEL_PACCHETTO non si deve specificarne la versione Nella fattispecie, per istallare i pacchetti suindicati, si digiti: pkg install -forge general pkg install -forge control pkg install -forge signal Si raccomanda di rispettare esattamente quest'ordine, dato che i pacchetti sono tra di loro indipendenti. Modo 2: installazione manuale Per istallare un pacchetto già scaricato, occorre che Octave punti alla cartella che contiene il pacchetto. Per verificare tale cartella digitare: pwd In alternativa, si può vedere il contenuto della cartella puntata, con: ls Se la cartella che appare non corrisponde a quella contenente il pacchetto, occorre spostare il pacchetto nella cartella indicata nel terminale, oppure spostare la cartella puntata con il comando: cd PERCORSO_DELLA_CARTELLA Una volta che viene raggiunta la cartella desiderata, digitare: pkg install NOME_DEL_PACCHETTO ove per NOME_DEL_PACCHETTO si intende il nome esteso del file, compreso versione ed estensione. Ad es. se si scarica il pacchetto control-2.4.5.tar.gz, si dovrà digitare: pkg install control-2.4.5.tar.gz 2.2 Caricamento Pacchetto Dopo l'installazione, per usare un pacchetto occorre anche caricarlo, digitando: pkg load NOME_DEL_PACCHETTO ove nel NOME_DEL_PACCHETTO non si deve specificare la versione. NOTA: Nei dettagli del singolo pacchetto che si trova nel sito http://www.octave.sourceforge.net/ è presente anche la voce 'autoload': se a fianco è scritto 'yes' significa che il pacchetto si caricherà automaticamente ogni volta che viene avviato octave; viceversa, se è scritto 'no' occorrerà ricaricarlo ogni qual volta che lo si usa con le istruzioni date qui sopra; per evitare di caricare manualmente pacchetti usati abitualmente ved. sotto 'AZIONI INIZIALI'. 3. Azioni iniziali I comandi che vengono eseguiti automaticamente all'avvio di Octave si trovano di default nel file avente questo percorso: /usr/share/octave/site/m/startup/octaverc Questo può essere utile per non ripetere le gli stessi comandi ogniqualvolta che si apre Octave. A seguito si indicano alcuni esempi. CARICARE AUTOMATICAMENTE FREQUENTEMENTE: I PACCHETTI CHE SI USANO pkg load NOME_DEL_PACCHETTO IMPOSTARE LA CARTELLA INIZIALE CUI PUNTA OCTAVE cd PERCORSO_CARTELLA IMPOSTARE L'EDITOR CHE UTILIZZA OCTAVE (se non si vuole usare l'editor di default, ovvero emacs) EDITOR(“NOME_DELL'EDITOR %s”) Quindi, per impostare gedit come editor si scrive: EDITOR(“gedit”) NOTA(1): Per istallare gedit basta digitare sul terminale: sudo apt-get install gedit. NOTA(2): Si ricordi che se nel percorso ci sono nomi contenenti degli spazi occorre comprendere il percorso con le virgolette “ ”. NOTA(3): I file al di fuori della cartella utente (/home/nome_utente) non si possono modificare partendo dall'interfaccia grafica (cliccandoci sopra), ma occorre partire da terminale. In tal caso, sul terminale occorre scrivere: sudo NOME_DELL'EDITOR /usr/share/octave/site/m/startup/octaverc e modificare tale file usando l'editor scelto. 4. Utilizzare Octave da interfaccia grafica Dalla versione 3.8, Octave dispone di un'interfaccia grafica (GUI) che può essere avviata con il comando: octave --force-gui Gli sviluppatori di Octave intendono di far avviare di default l'interfaccia grafica dalla versione 4.0. Tale interfaccia ricalca in parte quella del Matlab, anche per la scelta dei tasti (ad esempio, F5 per salvare ed avviare il programma scritto sull'editor). Nds: quando seguii il corso di Elaborazione elettronica dei segnali, utilizzavo la versione di Octave 3.6.4 che non disponeva di interfaccia grafica integrata per cui si era obbligati all'uso di Octave su terminale. Tuttavia, nonostante la nuova versione la dispone, non utilizzo la GUI, per cui ho di essa nient'altro che una conoscenza molto superficiale. Mi auguro che questo capitolo possa essere integrato da altri volontari, qualora fosse opportuno. 5. Utilizzare Octave da terminale Queste istruzioni base sono dedicate a chi preferisce non utilizzare la GUI. Avviare Octave Entrato nel terminale, digitare: octave Solo quando si installano pacchetti, per evitare problemi, è preferibile digitare sudo octave Aprire l'editor da Octave Basta digitare edit NOME_DEL_FILE.m se il file è già esistente nella cartella cui punta Octave, allora aprirà quella; altrimenti, verrà creato un nuovo file. NOTA(1): Attenzione a scrivere sempre l'estensione .m al nuovo file, altrimenti sia l'editor sia Octave non riconoscono tipo di file. NOTA(2): È consigliabile non usare un nome del file che contenga spazi ed altri caratteri speciali (come le parentesi, i trattini, le lettere accentate...) poiché Octave può non riuscire a gestirle; è preferibile nominare il file usando solo caratteri alfanumerici (ad esempio "nomedelfile.m" "NomeDelFile.m") Eseguire i file Octave Bisogna attenersi scrupolosamente a quanto segue. 1. Occorre innanzi tutto salvare il file .m (script Matlab/Octave) da far partire; 2. Assicurarsi che Octave punti alla cartella dove è presente il file; 3. digitare il nome del file senza l'estensione .m. Consigli per l'utilizzo Per qualsiasi dubbio sul comando che si vuole utilizzare, è estremamente utile il comando: help NOME_DEL_COMANDO Varie istruzioni sono presenti anche nel sito http://www.octave.sourceforge.net/ oppure, nel caso il comando sia presente anche in Matlab, nel sito http://www.mathworks.it/it/help/. Usare scorciatoie da tastiera: sono molto utili per velocizzare i compiti su octave; tra le più utili. - Alt+Tab, per passare da una finestra all'altra; - Tab all'interno del Terminale, per attivare l'autocompletamento: questa scorciatoia è veramente utile quando si hanno nomi molto lunghi (ad es., per eseguire lo script "RispFreqFiltroIIRRazionale.m" basta scrivere le prime lettere, diciamo "RispFreq" e premere il tasto tab: se nella stessa cartella non ci sono altri file che iniziano allo stesso modo apparirà automaticamente il nome dello script voluto) - Tasti direzionali su/giù, per scorrere la cronologia dei comandi - Ctrl + c, per terminare l'esecuzione del comando corrente - Spazio, dalla finestra di plot ritorna nella finestra del terminale - h, quando si è sulla finestra di plot, fa apparire sul terminale i comandi per le azioni possibili sulla finestra di plot NOTA: Per chi usa gedit come editor, si consiglia di incominciare lo script con il carattere %: questo artificio permette (non so perché) di riconoscere i comandi base di Matlab/Octave, colorandoli opportunamente. 6. Avvertenze e precisazioni comandi (aggiornato a Gennaio 2014) su alcuni Questo è probabilmente il capitolo più importante del testo, poiché vengono evidenziate le differenze tra Octave e Matlab riscontrate durante il corso. %% Attualmente, la suddivisione in celle non è riconosciuta in Octave. Pertanto, se si ha uno script suddiviso in celle e si vuole eseguire solo una cella, occorre commentare tutto il resto (o quantomeno commentare tutte le celle precedenti e usare il comando 'return' alla fine della cella da eseguire) oppure scomporre il singolo file in più file, ciascuno dei quali contiene una sola cella. sound, soundsc e similari Qualora tali comandi (una volta caricato il pacchetto 'sound' nel sito http://octave.sourceforge.net/) non funzionino, ossia non riusciate a ascoltare alcun suono, è possibile che risolviate il problema installando il pacchetto sox (digitando, da terminale, 'sudo apt-get install sox' oppure tramite Software Center). fvtool,fdatool [ved nota sotto] Attualmente, questi comandi devono essere ancora implementati su Octave. Pertanto, per visualizzare i grafici occorre usare i comandi di disegno (plot,semilogx,semilogy,...), mentre per le altre funzionalità si è costretti a ricorrere ad altri programmi (oppure, ovviamente, a Matlab stesso) buttord,cheb1ord,cheb2ord,ellipord Attualmente, questi comandi non prevedono il calcolo del'ordine e pulsazione di taglio nel dominio analogico, ovvero l'aggiunta della 's' come ultimo parametro. Per aggirare l'ostacolo, si immagina di campionare il segnale a pulsazione almeno doppia di quelle previste (rispettando il teorema di Nyquist); pertanto 1) si scalano le frequenze/pulsazioni in gioco di fc/2, ove fc è la frequenza di campionamento; 2) si utilizza il comando che calcola l'ordine e la pulsazione di taglio; 3) si rimoltiplicano le frequenze/pulsazioni per fc/2. lp2lp,lp2hp,lp2bp,lp2sp [ved nota sotto] Attualmente questi comandi non sono stati ancora implementati su Octave. In alternativa, si può usare in comando sftrans (che NON FUNZIONA IN MATLAB), che converte un passa-basso prototipo con pulsazione di taglio 1 in un filtro passabasso, passa-alto, passa-banda o elimina-banda a seconda dei parametri di ingresso. La struttura del comando è la seguente: [Sz1, Sp1, Sg1] = sftrans(Sz, Sp, Sg, W, stop) ove i primi tre ingressi sono la rappresentazione zeri-poli-guadagno del sistema, il quarto è pulsazione di taglio (o pulsazioni di taglio: in tal caso caso entra un vettore di due elementi), il quinto è 1 se la banda passante è estesa fino all'infinito (passaalto, elimina-banda), 0 altrimenti (passa-basso, passa-banda). Attenzione: se si vuole trasformare un passa-basso in un filtro passa-banda o eliminabanda è consigliabile che gli ingressi Sz e Sp siano vettori riga, in modo che i vettori di uscita siano anch'essi vettori riga; diversamente, se Sz ed Sp sono vettori colonna, le uscite corrispondenti agli zeri ed ai poli del sistema trasformato Sz1 , Sp1 saranno matrici (2 x {ordine_del_sistema}) ed in tal caso occorre vettorizzarle con i comandi: Sz1=Sz1(:); Sp1=Sp1(:); bilinear Questa funzione esiste, ma interpreta il terzo parametro diversamente rispetto a Matlab. Siano NUM,DEN il numeratore ed il denominatore di una funzione di trasferimento nel dominio di Laplace e T il periodo di campionamento (virtuale) usato per la trasformazione diretta. Allora in Octave occorre scrivere: [num,den]=bilinear(NUM,DEN,T) ad es. per T=2 [num,den]=bilinear(NUM,DEN,2) In Matlab invece: [num,den]=bilinear(NUM,DEN,1/T) ad es. per T=2 [num,den]=bilinear(NUM,DEN,.5) latc2tf, tf2lact [ved nota sotto] Attualmente questi comandi non sono ancora stati implementati in Octave. NOTA: La pagina web http://www.wiki.octave.org/Signal_package#Missing_Functions raccoglie tutte le funzioni mancanti al pacchetto Signal; qualora i comandi qui indicati come assenti non risultino nell'elenco nel sito, molto probabilmente il/i comando/i è/sono stato/i finalmente implementati. SITI CITATI NEL TESTO https://www.gnu.org/software/octave/ http://www.octave.sourceforge.net/ http://wiki.octave.org/Octave_for_Debian_systems http://www.wiki.octave.org/Signal_package#Missing_Functions
© Copyright 2024 Paperzz