ml - Introduzione interattiva di MATLAB       Vai all'indice del corso

Nozioni di avvio
Versione 0.83 (2003-10-12)

Indice del modulo

avv.01 - Generalità su MATLAB
avv.05 - Dialogo con MATLAB
avv.10 - Una prima istruzione numerica
avv.11 - L' identificatore ans, le variabili e le espressioni
avv.12 - Calcoli mediante ans
avv.20 - Gli operatori aritmetici
avv.21 - Operazioni su numeri interi
avv.22 - Piu` operazioni ottenute con una linea
avv.24 - Scritture a mano e scritture MATLAB per le espressioni
avv.25 - Potenze e radici
avv.30 - Forma delle variabili
avv.31 - Assegnazione di valori di generi diversi a una variabile
avv.40 - Costanti predisposte
avv.41 - Le informazioni Inf e NaN
avv.42 - Disponibilita` di costanti predisposte
avv.43 - Scelta degli identificatori
avv.45 - Quadro di functions elementari
avv.46 - Radice
avv.47 - Funzione esponenziale: exp
avv.48 - Funzioni logaritmiche
avv.49 - Funzioni seno, coseno e tangente: sin cos tan
avv.50 - Valore assoluto e segno: abs sign
avv.51 - Arrotondamenti: round, floor, ceil, fix
avv.55 - Il segno `` ; ``
avv.60 - Scritture di risultati numerici
avv.62 - Formato bank
avv.64 - Formato rat
avv.65 - Altri formati di emissione
avv.70 - Muoversi nel foglio di lavoro
avv.71 - I comandi who e whos
avv.72 - Utilizzo di who e whos
avv.73 - Il comando diary
avv.74 - Utilizzo di diary
avv.75 - Registrazione su floppy della sessione di lavoro
avv.76 - Ripresa di registrazione con diary on
avv.78 - Il carattere %
avv.79 - Richiesta di calcolo con commento
avv.80 - Il comando help
avv.81 - Comando help per la prestazione diary
avv.82 - Richiamo di comandi precedenti

avv.01 - Generalità su MATLAB

MATLAB è un sistema software che consente di ottenere calcoli tecnico-scientifici mediante comandi molto più sintetici di quelli formulabili mediante i linguaggi procedurali piu` tradizionali come Fortran, BASIC, Pascal, C o Java, che in seguito chiameremo linguaggi di medio livello.
È prodotto dalla MathWorks, industria specializzata in software computazionale che lo presenta con lo slogan:
The Language of Technical Computing - Computation - Visualization - Programming

Il sistema è nato per facilitare calcoli sulle matrici, si è successivamente arricchito di molteplici funzionalità di calcolo, di visualizzazione, di programmazione e di interazione uomo-macchina. Nell'agosto 2002 è uscita la sua versione 6.5.

Nel sito della Mathworks (http://www.mathworks.com/) si trova una vastissima documentazione tecnica sulle varie componenti del prodotto; in particolare si possono scaricare liberamente vari manuali stampabili a partire dalla pagina
http://www.mathworks.com/access/helpdesk/help/techdoc/MATLAB.shtml.
Un manuale introduttivo consigliabile è quello chiamato Getting Started with MATLAB.

MATLAB designa, oltre al sistema, il relativo linguaggio. Si tratta di un linguaggio da interpretare (i citati Fortan, Pascal, C e Java sono linguaggi da compilare), dotato di un ampio repertorio di comandi e di molte centinaia di funzioni predefinite, che dispone di numerose istruzioni grafiche che possono essere utilizzate sia per ottenere semplici disegni in tempi brevi, sia per avere grafici elaborati ricchi di informazioni (naturalmente in seguito a richieste piuttosto laboriose). Esso permette di scrivere programmi anche molto complessi, consente di definire delle GUI, interfacce grafiche per l'utente, e puo` interagire con altri sistemi di elaborazione dei dati come linguaggi di programmazione come Fortran, C++ e Java, fogli elettronici come Excel e routines per il calcolo simbolico facenti parte del sistema Maple.

MATLAB e` ampiamente diffuso e può operare con vari sistemi operativi (MS-DOS, Windows, Linux, UNIX, MAC-OS, ...).

torna all'indice del modulo - del corso

avv.05 - Dialogo con MATLAB

Il più semplice modo per operare con MATLAB consiste nel dialogare con il sistema mediante una finestra di lavoro inviandogli richieste dalla tastiera e ricevendo da esso risposte presentate sulla finestra suddetta, su finestre grafiche o su files di uscita. In questo e nei prossimi moduli ci riferiremo soprattutto a questo utilizzo dialogico di MATLAB.

L'utente invia al sistema delle istruzioni in righe di comandi digitate sulla destra del prompt di sollecito  ``>>``.
Ogni istruzione costituisce una richiesta al sistema e comporta calcoli e modifiche dei valori di determinate memorie.
Successivamente vi puo` essere la presentazione di uno o piu` risultati costituenti la risposta nelle linee del foglio di lavoro che seguono la richiesta.
Quindi il sistema emette un nuovo prompt ed il cursore si posizione in attesa di una nuova istruzione dell'utente.
Talune richieste, pero`, non comportano la presentazione di risultati sul foglio di lavoro e su di esso viene emesso solo il prompt. In risposta a certi comandi si possono avere composizioni di finestre grafiche o di files di uscita.

Una sessione di lavoro interattivo con MATLAB e` quindi costituita da successive fasi "richiesta + eventuale risposta + prompt". Richieste, risposte e prompts vengono registrate sopra un foglio di lavoro, sequenza di linee che in parte compaiono nella finestra di lavoro e che possono essere recuperate agendo sulla barra di scorrimento sulla destra della finestra per la rilettura e per la riutilizazione mediante manovre "ritaglia ed incolla".

torna all'indice del modulo - del corso

avv.10 - Una prima istruzione numerica

Il tipo piu` semplice di richieste che si puo` avanzare al sistema MATLAB riguarda una operazione su numeri indicati esplicitamente.

>>5*37
ans =
    185
>>

Per formulare una richiesta di calcolo l'utente deve digitare un'espressione: nel caso attuale essa e` costituita da due operandi, le costanti numeriche 5 e 37, separati da un operatore binario, dato dal segno di moltiplicazione ``*``.

Recepita la richiesta MATLAB esegue il calcolo e, come si vede, presenta due linee di risposta ed il prompt per la richiesta successiva.

torna all'indice del modulo - del corso

avv.11 - L' identificatore ans, le variabili e le espressioni

La stringa ans (abbreviazione di answer = risposta) identifica il registro di memoria che MATLAB usa per memorizzare la risposta fornita all'ultima richiesta dell'utente.

La scrittura ans e` un primo esempio di identificatore (o nome). In generale in un linguaggio di programmazione un identificatore e` una stringa che individua una entita` informativa o operativa che interviene nelle elaborazioni. La prima entita` informativa da considerare e` la variabile, entita` che si concretizza in un registro di memoria nel quale, nel corso di una sessione di lavoro, si possono avere valori diversi. Le variabili piu` tipiche riguardano valori numerici; MATLAB consente di operare anche con altri tipi di variabili, innanzi tutto variabili che assumono come valori delle stringhe, cioe` delle scritture utilizzabili per comporre delle risposte costituite non solo da risultati numerici, ma anche da indicazioni dei loro significati.

Altre entita` operative fornite da identificatori che incontreremo tra breve sono gli operatori e le functions. Nelle frasi di un linguaggio come MATLAB si trovano costanti, variabili, operatori e richiami di functions che compongono le espressioni; con queste si formulano richieste di calcolo.

In precedenza abbiamo visto richieste a MATLAB formulate con dati costanti espressi da scritture come 5 e 17 e da un dato variabile individuato dall'identificatore predefinito ans ; la maggior parte delle variabili pero` viene scelta dall'utente.

torna all'indice del modulo - del corso

avv.12 - Calcoli mediante ans

La variabile ans si puo` far comparire in una espressione che si vuole far calcolare. Consideriamo ad es. le seguenti richieste di calcolo:

>> 34217
ans =
     32174
>> ans + 377
ans =
    3 5943
>> ans/7
ans =
    45429
>>

La prima espressione digitata si riduce alla sola costante 34217 e serve solo a fissare un valore per la ans; la seconda e` data da una terna (operando sinistro, operatore binario, operando destro), nella fattispecie (ans, operatore di addizione ``+``, costante 377); costrutto analogo nella terza richiesta. Eseguiti i calcoli alla variabile ans risulta assegnato il valore attuale 4942, utilizzabile per una richiesta successiva.

Osserviamo che finora abbiamo usato MATLAB per operazioni che si possono eseguire anche con le piu` semplici calcolatrici elettroniche; con queste infatti si possono effettuare calcoli su costanti immesse con i tasti e sopra un valore conservato tra una operazione e la successiva, corrispondente alla variabile ans. Naturalmente, come avremo modo di constatare, MATLAB consente di effettuare elaborazioni molto piu` complesse e ricche di conseguenze.

torna all'indice del modulo - del corso

avv.20 - Gli operatori aritmetici

Con un computer, normalmente, si possono trattare solo numeri razionali appartenenti ad un insieme non facile da definire esattamente che pero` possiamo precisare piu` avanti e che diciamo insieme dei numeri IEEE. Con i numeri IEEE pero` si puo` approssimare in modo soddisfacente la massima parte dei numeri reali di interesse applicativo.

MATLAB consente innanzitutto di effettuare operazioni aritmetiche su coppie di numeri. Queste sono individuate dai seguenti simboli:
  +   per la somma;
  -   per la differenza;
  *   per il prodotto;
  /   per il quoziente;
  ^   per l'elevamento a potenza.

I precedenti segni identificano degli operatori binari, operatori che richiedono un operando alla loro sinistra ed uno alla loro destra. Questi operatori agiscono sui numeri espressi da scritture decimali che possono essere formate dalla sola parte intera oppure comprendenti una parte decimale: con MATLAB questi due tipi di numeri vengono trattati similmente (contrariamente a quanto accade con i linguaggi procedurali di medio livello).

Come vedremo essi agiscono anche su entita` composite come numeri complessi, vettori e matrici. Inoltre i segni + e - si possono usare anche come operatori unari, davanti ad un solo operando, per evidenziare che si tratta di numero positivo o per farlo diventare un numero negativo, rispettivamente. In effetti molti elementi del linguaggio MATLAB (operatori, functions, ...) assumono ruoli e significati diversi in dipendenza del contesto nel quale compaiono.

torna all'indice del modulo - del corso

avv.21 - Operazioni su costanti intere

Considera le seguenti richieste di operazioni aritmetiche:

>> 5+17
ans =
    22
>> -5+3
ans =
    -2
>> 5--3
ans =
     8
>> 6*7
ans =
    42
>> 42/7
ans =
     6
>> 7/42
ans =
   1/6
>> 3^4
ans =
    81

torna all'indice del modulo - del corso

avv.22 - Piu` operazioni ottenute con una linea

Le precedenti operazioni avrebbero potuto essere richieste su un'unica riga separandole con segni virgola.

>> 5+17, -5+3, 5--3, 6*7, 42/7, 7/42, 3^4
ans =
    22
ans =
    -2
ans =
     8
ans =
    42
ans =
     6
ans =
   1/6
ans =
    81
>>

Si osserva che alla compattezza della richiesta non corrisponde la compattezza della risposta presentata in numerose linee quasi povere di informazioni. Una presentazione piu` compatta dei risultati si puo` ottenere solo con comandi piuttosto elaborati.

Si osserva anche che l'unico risultato non intero viene presentato come frazione semplificata rispetto alla richiesta

torna all'indice del modulo - del corso

avv.24 - Scritture a mano e scritture MATLAB per le espressioni

Le scritture a mano delle richieste di operazioni e le corrispondenti richieste a MATLAB presentano differenze dovute alla necessita` dei linguaggi di programmazione di esprimersi attraverso allineamenti di caratteri per la difficolta` di gestire i caratteri in due dimensioni (fa pero` eccezione il sistema MathCad). Queste differenze non sono grandi, ma conviene tenerle ben presenti. In effetti quando si comincia ad utilizzare un linguaggio di programmazione si possono commettere parecchi "errori ortografici" nella scrittura delle espressioni.

Il segno di prodotto ``*`` non può essere omesso e non puo` sostituirsi con un punto o una x, come si puo` fare nelle espressioni scritte a mano. Inoltre la divisione di numeri si ottiene con il segno ``/``, mentre non si puo` ottenere con il segno ``:`` che in MATLAB non ha a che fare con la divisione (ma con le progressioni, v. ???). Osserviamo anche che il segno ``/`` serve ad esprimere la divisione fra matrici (v ???).

torna all'indice del modulo - del corso

avv.25 - Potenze e radici

Osserviamo le seguenti richieste di elevamento a potenza nelle quali l'esponente e` il reciproco di un numero intero positivo, ovvero e` una frazione della forma 1/n.

>> 36^0.5
ans =
     6
>> 125^(1/3)
ans =
     5
>> 27^(1/3)
ans =
     3
>> 15^(1/3)
ans =
    2.4662
>> 15^(1/4)
ans =
    1.9680
>> 15^0.25
ans =
    1.9680
>> 

Si vede quindi che una espressione come b^(1/n), con b reale positivo, consente di calcolare la radice aritmetica n-esima della base b.

Si osserva inoltre che i risultati sono presentati senza decimali se si tratta di numeri interi,

mentre sono presentati con quattro decimali se si tratta di numeri non interi.

torna all'indice del modulo - del corso

avv.30 - Forma delle variabili

Ogni stringa costituita da lettere, cifre o segni _ che inizia con un carattere alfabetico o con _ può costituire l'identificatore di una variabile. Il linguaggio di MATLAB (piu` in particolare il suo lessico) e` sensibile alla distinzione minuscole/maiuscole; quindi Valore, valore e VALORE sono identificatori diversi; e diversi anche da va_lo_re

L'assegnazione di un valore ad una variabile si ottiene mediante una istruzione della forma:
nome_variabile = espressione_numerica
oppure
nome_variabile = 'espressione simbolica'

Questa istruzione consente di assegnare ad una variabile un valore costituito da una stringa.

torna all'indice del modulo - del corso

avv.31 - Assegnazione di valori di diverso genere a una variabile

Puo` accadere che ad una variabile, chiamiamola aula, in un primo momento si assegni la stima del numero degli studenti presenti in un'aula e successivamente la denominazione di tale locale.

>> aula=92
aula =
    92
>>
. . . . . .
>> aula='S1.7'
aula =
S2.1
>>

In effetti MATLAB consente di assegnare in fasi successive ad una variabile valori di natura diversa: non viene assegnato un tipo fisso alle variabili, ma solo un tipo adatto alle sue ultime richieste. Nei confronti delle richieste dell'utente MATLAB assume un atteggiamento adattivo, cioe` si sforza di interpretare tutte le sue richieste senza chiedergli dichiarazioni dettagliate. Questo atteggiamento consente di sveltire molti calcoli, ma presenta il pericolo di fornire risultati apparentemente corrispondenti a quanto l'utente intendeva richiedere, ma in realta` riguardanti interpretazioni diverse dalle intenzioni.

torna all'indice del modulo - del corso

avv.40 - Costanti numeriche predisposte

In molti calcoli intervengono le cosiddette costanti matematiche, numeri con significati matematici particolari. Quella forse piu` usata e` pi greca, il rapporto fra la circonferenza ed il diametro di un cerchio; essa viene fornita da MATLAB mediante l'identificatore predefinito ``pi``. Altre si possono ottenere come valori assunti da funzioni speciali in corrispondenza di particolari valori della variabile indipendente: ad es. la base dei logaritmi naturali e viene ottenuta come exp(1) (come vedremo exp e` l'identificatore della funzione esponenziale); costanti analoghe sono i valori assunti da funzioni trigonometriche per angoli particolari.

Due altri identificatori predefiniti, ``i``e ``j``consentono di trattare la unita` immaginaria, cioe` uno dei due numeri il cui quadrato e` -1 (l'altro e` -i).

MATLAB inoltre rende disponibili tre numeri associati alla modalita` seguita per rappresentare i numeri IEEE:

eps   identifica il piu` piccolo numero che aggiunto ad 1 lo modifica, pari a 2^(-52);
realmin identifica il più piccolo numero IEEE positivo, pari a 2^(-1022);
realmax   identifica il più grande numero IEEE positivo, pari a (2-eps)^1023.

Questi tre numeri, come vedremo ??? permettono di tenere sotto controllo varie situazioni di calcolo critiche.

torna all'indice del modulo - del corso

avv.41 - Le informazioni Inf e NaN

Infine MATLAB mette a disposizione dell'utente informazioni atte ad individuare i risultati di elaborazioni numericamente o matematicamente inaccettabili: esse permettono di segnalare risultati di dubbio significato e di tirarne conseguenze come la rinuncia a pretendere elaborazioni troppo impegnative o viceversa l'adozione di procedure piu` efficaci.

Inf   sta per infinito, e corrisponde al risultato di elaborazioni che condurrebbero a numeri superiori ai massimi trattabili;
NaN   (acronimo di "not a number") viene fornito come risultato di richieste di calcolo inaccettabili matematicamente e numericamente.

torna all'indice del modulo - del corso

avv.42 - Disponibilita` di costanti predisposte

Esamina le seguenti richieste di calcolo

>> pi, eps
ans =
    3.1416
ans =
  2.2204e-016
>>  Inf, 0/0, Inf-Inf, 1/0
ans =
   Inf
Warning: Divide by zero.
ans =
   NaN
ans =
   NaN
Warning: Divide by zero.
ans =
   Inf
>>

torna all'indice del modulo - del corso

avv.43 - Scelta degli identificatori

L'utente puo` utilizzare come identificatori di proprie variabili anche gli identificatori predefiniti i, j, pi eps, Inf, NaN. In effetti tutte le variabili, anche quelle predefinite, sono sovrascrivibili, cioe` possono essere successivamente usate per dati con valori diversi ed anche di tipi diversi: eps potrebbe individuare un vettore di stringhe e pi una matricedi numeri complessi.

Ora vedremo alcune situazioni nelle quali alcuni identificatori vengono a giocare ruoli diversi; vi sono quindi scritture non immediatamente chiare che il sistema riesce ad interpretare univocamente e può essere utile analizzarle per capire come il sistema interpreta gli identificatori tenendo conto del contesto.

Riteniamo però sconsigliabile servirsi di scritture che non siano chiare anche a prima vista, soprattutto quando si devono richiedere calcoli complessi. È viceversa caldamente consigliabile abituarsi ad utilizzare identificatori sufficientemente chiari, autoesplicativi e lontani da ogni ambiguità di interpretazione umana.

torna all'indice del modulo - del corso

avv.45 - Quadro di functions elementari

MATLAB mette a disposizione una grande varieta` di functions, meccanismi che consentono di fornire i valori che determinate funzioni assumono in corrispondenza di dati valori delle loro variabili indipendenti.

Le prime functions che consideriamo riguardano funzioni di una variabile che ci limitiamo a considerare nel campo reale; alcune di queste vengono collocate nella categoria, non tanto ben delimitata, delle cosiddette funzioni trascendenti elementari. Elenchiamo dunque i loro richiami.

sqrt(x) radice quadrata di x>=0,
exp(x) funzione esponenziale di x reale;
log(x) funzione logaritmo in base e di x>0
log10(x) funzione logaritmo in base 10 di x>0
log2(x) funzione logaritmo in base 2 di x>0
sin(x) seno di angolo misurato in radianti da x reale
cos(x) coseno di angolo misurato in radianti da x reale,
tan(x) di angolo misurato in radianti da x reale,
abs(x) valore assoluto di x reale;
sign(x) segno di x reale;
round(x) intero piu` vicino ad x reale.
floor(x) massimo intero minore o uguale ad x reale
ceil(x) minimo intero maggiore o uguale ad x reale
fix(x) primo intero tra x reale e 0

torna all'indice del modulo - del corso

avv.46 - Radice quadrata: sqrt

Si considerino le seguenti richieste:

>> sqrt(9)
ans =
          3
>> sqrt(8)
ans =
          2.8284
>> sqrt(2)
ans =
          1.4142
>> exp(1)
ans =
    2.7183

torna all'indice del modulo - del corso

avv.47 - Funzione esponenziale: exp

Si considerino le seguenti richieste:

>> sqrt(9)
ans =
          3
>> sqrt(8)
ans =
          2.8284
>> sqrt(2)
ans =
          1.4142
>> exp(1)
ans =
    2.7183

torna all'indice del modulo - del corso

avv.48 - Funzioni logaritmiche: log, log2, log10

Si considerino le seguenti richieste:

>> log(1)
ans =
         0
>> l2=log(2)
l2 =
    0.6931
>>  log2(e)
ans =
    1.4427
>> l2e=log2(e)
l2e =
    1.4427
>> l2*l2e
ans =
     1

torna all'indice del modulo - del corso

avv.49 - Funzioni seno, coseno e tangente: sin, cos, tan

Si considerino le seguenti richieste:

>> s=sin(pi/3)
s =
    0.8660
>> c=cos(pi/3)
c =
    0.5000
>> c*c+s*s
ans =
     1
>> t=tan(pi/3),s/c
t =
    1.7321
ans =
    1.7321

torna all'indice del modulo - del corso

avv.50 - Valore assoluto e segno: abs sign

Si considerino le seguenti richieste:

>> x=-3.7;
>>  abs(x),sign(x)
ans =
    3.7000
ans =
    -1
>> sign(-x),sign(0)
ans =
     1
ans =
     0

torna all'indice del modulo - del corso

avv.51 - Arrotondamenti: round, floor, ceil, fix

Si considerino le seguenti richieste:

>>round(1.5),round(1.5001),round(-2.5)
ans =
     2
ans =
     2
ans =
    -3
>> floor(12.9),ceil(-4.5)
ans =
    12
ans =
    -4
>> fix(8.2),fix(-8.2),fix(-8+eps),fix(-8+4*eps)
ans =
     8
ans =
    -8
ans =
    -8
ans =
    -7

torna all'indice del modulo - del corso

avv.56 - Il separatore `` ; ``

Se al termine di un'istruzione di calcolo viene posto il simbolo ``;`` il comando viene eseguito ma non si ha alcuna "stampa" (cioe` non si ha alcuna emissione dei valori). Osserviamo che spesso si usa il termine stampa, o l'equivalente print, per parlare di emissione su una finestra del video. Si tratta di un termine ereditato dai tempi nei quali i risultati venivano forniti solo su stampante o su telescrivente (anni '70).

Le istruzioni seguite da ``;`` consentono di assegnare dei valori a variabili che esprimono risultati intermedi di un calcolo piu` complesso e che non presentano interesse diretto per l'utente. Esse saranno poi seguite da istruzioni che calcolano dei risultati piu` conclusivi che verranno emessi sullo schermo ed eventualmente registati su un file insieme ad opportuni commenti per essere successivamente riletti o utilizzati per ulteriori calcoli.

torna all'indice del modulo - del corso

avv.60 - Scritture di risultati numerici

I risultati numerici dei calcoli possono essere presentati da MATLAB in modi diversi; a questo proposito si parla di diversi formati di presentazione.

Normalmente i numeri non interi aventi ordine di grandezza non troppo diverso da 1 vengono presentati con quattro cifre decimali, con un buon compromesso fra concisione ed accuratezza.

>> 15^(1/4)
  ans =
    1.9680

Talora servono indicazioni piu` precise; per questo si puo` passare al formato long

>> format long
>> 15^(1/4)
ans =
   1.96798967126543

Le istruzioni successive che portano all'emissioni di numeri continueranno a servirsi del formato long finche' si faccia una diversa scelta con un comando esplicito. Si puo` tornare alle scritture con quattro decimali richiedendo il formato short oppure scegliere il formato compact.

>> format short
>> 15^(1/4)
ans =
    1.9680
>> format compact
>> 14/6
ans =
    2.3333

torna all'indice del modulo - del corso

avv.62 - Il formato bank

Per molti risultati, specialmente quelli di natura finanziaria, due decimali sono sufficienti; per questi e` disponibile il format bank:

>> format bank
>> 15^(1/4)
ans =
          1.97
>> 4 + 6
ans =
          10.00

Questo formato e` adatto ad una unita` monetaria come l'euro, mentre non e` adatto alle vecchie lire i cui centesimi non erano significativi.

torna all'indice del modulo - del corso

avv.64 - Il formato rat

Talora puo` essere utile e significativo avere un numero sotto forma della frazione di interi piccoli che approssima il numero da presentare.

>> format rat
>> 14/6
ans =
     7/3
>> pi
ans =
     355/113

torna all'indice del modulo - del corso

avv.65 - Altri formati di emissione

Prendi confidenza con altri formati di emissione considerando una frazione come 14/6

>> format long, 14/6, format long e, 14/6, format long g, 14/6
ans =
   2.33333333333333
ans =
    2.333333333333334e+000
ans =
          2.33333333333333
>>

Il semplice comando format ristabilisce le condizioni iniziali di default per le emissioni. Osserviamo la possibilita` di una scrittura abbreviata per la richiesta format prevedibilmente piu` frequente. La facilitazione delle richieste piu` frequenti e` un atteggiamento usuale da parte di MATLAB e di altri linguaggi di programmazione.

torna all'indice del modulo - del corso

avv.70 - Muoversi nel foglio di lavoro

Le successive fasi "richiesta + eventuale risposta" costituenti una sessione di lavoro con MATLAB vengono registrate sopra il foglio di lavoro, sequenza di linee che, almeno in parte, sono visibili sulla finestra di lavoro a disposizione dell'utente.

Il cursore in genere punta all'ultima linea attuale del foglio di lavoro ed alla posizione nella quale si puo` immettere un nuovo comando. Con le frecce della tastiera si puo` spostare il cursore e si possono richiamare linee di comando precedentemente digitate mediante l'uso ripetuto della "freccia in alto". Se ad un certo punto dell sessione di lavoro si vogliono riprendere comandi successivi a quello attualmente richiamato, basta agire sulla "freccia in basso" della tastiera. Agendo con il mouse sulla barra di scorrimento sulla destra della finestra di lavoro ci si puo` posizionare in qualunque punto del foglio di lavoro. In tal modo si possono rivedere le fasi precedenti della sessione.

Inoltre si possono riutilizzare porzioni del foglio di lavoro "colorandole", cioe` muovendo il cursore mediante il mouse con il tasto sinistro abbassato o le frecce del tastierino con il tasto Shift premuto e quindi salvandole in una memoria tampone (buffer) in conseguenza della digitazione di "control C". Una porzione di foglio di lavoro cosi` salvata (bufferizzata) puo` essere aggiunta al foglio di lavoro battendo "control V".

torna all'indice del modulo - del corso

avv.71 - I comandi who e whos

Per sapere quali sono le variabili definite durante la sessione di lavoro si utilizza il comando who, che le elenca. Se si vogliono conoscere le variabili definite nella sessione di lavoro che iniziano con una certa lettera o gruppo di lettere è possibile utilizzare il carattere jolly (wild character) * (dalla versione 5.3). Il comando whos elenca in modo dettagliato le variabili definite nella sessione di lavoro e quindi puo` portare a stampe molto estese non facilmente dominabili.

Un altro modo per rivedere i risultati ottenuti nelle precedenti fasi di una sessione consiste nel consultare il cosiddetto workspace: attraverso l'apposita finestra si individua l'elenco di tutte le variabili utilizzate accompagnate dalle relative caratteristiche strutturali. cliccandodue volte su una variabile si ottengono i suoi valori, uno solo per le variabili semplici, molti per le matrici.

torna all'indice del modulo - del corso

avv.72 - Utilizzo di who e whos

Cancella le variabili precedentemente usate, definisci a tuo piacimento le variabili pippo, pluto, paperino, e topolino. Dai i comandi: who, who p*, whos, whos top*.

>> clear
>> pippo=1; pluto=1+i; paperino='stringa'; topolino=3^(1.2);
>> who
Your variables are:
paperino    pippo       pluto       topolino    
>> who p*
Your variables are:
paperino    pippo       pluto       
>> >> whos
  Name           Size         Bytes  Class
paperino       1x7             14  char array
  pippo          1x1              8  double array
  pluto          1x1             16  double array (complex)
  topolino       1x1              8  double array
Grand total is 10 elements using 46 bytes
>> whos top*
  Name           Size         Bytes  Class
topolino       1x1              8  double array
Grand total is 1 elements using 8 bytes
>>

torna all'indice del modulo - del corso

avv.73 - Il comando diary

Il comando diary serve alla registrazione della sessione di lavoro o di una sua parte. Digitando diary viene aperto un file di testo che, per default, si trova nella sottodirectory MATLAB della directory di Temp del driver D (questo con la versione 5.3); questo file presenta il nome diary e nessuna estensione.

Si può indirizzare la registrazione della sessione di lavoro in un file particolare con il comando:

diary percorso\nome_file.

La registrazione ha termine come conseguenza del comando diary off o comunque al termine della sessione di lavoro. Se si vuole riattivare la registrazione sullo stesso file basta dare il comando diary on.

torna all'indice del modulo - del corso

avv.74 - Utilizzo di diary

Apri il file diary per default, scrivi la frase "prove di registrazione", chiudi il diary e rintraccia il file.

>> diary
>> prove di registrazione
??? prove di
     |
Missing operator, comma, or semi-colon.

>> diary off
>> 

Il file si trova nel direttorio D:\Temp\MATLAB\

torna all'indice del modulo - del corso

avv.75 - Registrazione su floppy della sessione di lavoro

Se disponi di un floppy disk indirizza la registrazione nel file a:eserMATLAB01.txt, scrivi la frase " nuove prove di registrazione", chiudi il diary e rintraccia il file leggendone il contenuto. Se non hai a disposizione un floppy puoi costituire un direttorio di lavoro nel disco C di nome TEMP e registrare in C:\TEMP\ eserMATLAB01.txt).

>>  diary a:eserMATLAB01.txt
>> nuove prove di registrazione
??? nuove prove
          |
Missing operator, comma, or semi-colon.

>> diary off
>>

oppure

>> diary c:\Temp\esercitazione01.txt
>> nuove prove di registrazione
??? nuove prove
          |
Missing operator, comma, or semi-colon.

>> diary off
>>

torna all'indice del modulo - del corso

avv.76 - Ripresa di registrazione con diary on

Utilizza il comando diary on per riaprire la registrazione, e scrivi la frase " si riprende la registrazione " ; quindi esamina il contenuto del file eserMATLAB01.txt verificando che non è stato modificato. Quale comando si deve digitare perché la frase precedente risulti registrata?

>> diary on
>>  si riprende la registrazione
???  si riprende
        |
Missing operator, comma, or semi-colon.

>>

A questo punto si constata che la registrazione non è ancora cambiata; per questo occorre aggiungere:

>> diary off
>>

torna all'indice del modulo - del corso

avv.78 - Il carattere %

Il carattere ``% `` opera come carattere di fine linea di comando: il testo nella linea che segue il simbolo ``%'' viene ignorato in esecuzione. Esso pero` puo` essere richiamato per essere riletto o stampato mediante la funzione help. Esso può essere molto utile per commentare istruzioni complesse che si registrano e che si prevede di riutilizzare in seguito.

torna all'indice del modulo - del corso

avv.79 - Richiesta di calcolo con commento

Chiedi un'approssimazione della radice di 2 (per questo serve la function sqrt) ed aggiungi un appropriato commento.

>> sqrt (2)   %diagonale del quadrato di lato unitario misurata in modo approssimato
ans =
    1.4142

Si ottiene invece solo un commento battendo:

>> %sqrt (2)   diagonale del quadrato di lato unitario misurata in modo approssimato
>>

torna all'indice del modulo - del corso

avv.80 - Il comando help

Il comando help permette di avere presentate sullo schermo informazioni sulle functions e sui comandi di MATLAB. Basta inviare la riga di comando
help nome_della_function.

torna all'indice del modulo - del corso

avv.81 - Comando help per la prestazione diary

Ripassa le opzioni del comando diary mediante il comando help.

>> help diary

DIARY Save text of MATLAB session.
DIARY filename   causes a copy of all subsequent command window input
and most of the resulting command window output to be appended to the
named file.  If no file is specified, the file 'diary' is used.
 
DIARY OFF suspends it. 
DIARY ON turns it back on.
DIARY, by itself, toggles the diary state.
 
Use the functional form of DIARY, such as DIARY('file'),
when the file name is stored in a string.
>>

torna all'indice del modulo - del corso

avv.82 - Richiamo di comandi precedenti

Evidenzia con il mouse le righe

DIARY OFF suspends it. 
DIARY ON turns it back on.
DIARY, by itself, toggles the diary state.

Usa le frecce del tastierino per scorrere le linee di comando precedentemente digitate. Mediante le frecce, il tasto "Canc/Delete" o il tasto "Backspace", trasforma la linea di comando help diary nell'istruzione help e scorri la risposta con il mouse o con i tasti "PageUp" e "PageDown". Ripeti inviando il comando

help help

torna all'indice del modulo - del corso