Anteprima
Vedrai una selezione di 4 pagine su 11
MATLAB - istruzioni d'uso Pag. 1 MATLAB - istruzioni d'uso Pag. 2
Anteprima di 4 pagg. su 11.
Scarica il documento per vederlo tutto.
MATLAB - istruzioni d'uso Pag. 6
Anteprima di 4 pagg. su 11.
Scarica il documento per vederlo tutto.
MATLAB - istruzioni d'uso Pag. 11
1 su 11
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Array (vettori & matrici)

Finora si è pensato alle variabili utilizzate come semplici valori numerici (variabili scalari). In realtà, ogni variabile è una struttura di tipo vettoriale: ARRAY è una lista di valori ordinati secondo uno o più indici. Un array ha due dimensioni: la prima dimensione rappresenta il numero di righe (n), la seconda il numero di colonne (m).

Funzioni MATLAB che consentono di costruire particolari matrici e vettori:

  • traccia di una matrice (trace)
  • sommare le componenti di un vettore (sum)

Il resto delle funzionalità:

Pre-allocazione: per ottenere codice più veloce, è possibile effettuare la pre-allocazione di vettori e matrici, ossia l'allocazione in memoria dei vettori e delle matrici prima del loro utilizzo (usando la funzione zeros o ones), rendendo il codice più efficiente (spesso si eliminano i messaggi di warning).

  • di MATLAB).Memorizzare un vettore riga:
<code><pre>>> x=[1 -1 3 4 0]</pre></code>
  • Memorizzare un vettore colonna:
<code><pre>>> x=[1; -1; 3; 4; 0]</pre></code>
  • Costruzione di vettori equispaziati:
<code><pre>vettore=inizio:passo:fine( Questo vettore x viene usato negli esempi successivi )</pre></code>
  • Comando linspace:
<code><pre>>> x=linspace(0,0.5,6)</pre></code>

Genera dei vettori riga linearmente intervallati. Dove min, max sono gli estremi dell'intervallo incui generare i numeri e num è il numero di elementi da generare nell'intervallo specificato. Il numero di punti è opzionale, se omesso viene posto uguale a 100. Usare la costruzione di vettori equispaziati o usare il comando linspace è indifferente. Il risultato è il medesimo.

  • Operazioni con arrayOperazioni base:
<code><pre>Prodotti tra array: vengono eseguite le operazioni di prodotto vettore - vettore,</pre></code>

matrice - vettore,

● matrice - matrice tramite :

*Operazione di vettorializzazione: volendo utilizzare le operazioni aritmetiche tra vettori (come

● elevamento a potenza, divisione, …), che normalmente non sono definite, è possibile farlo

tramite l’utilizzo del simbolo: . posto davanti al simbolo dell’operazione (^, / , …) permette di

svolgere l’operazione per ogni singolo componente del vettore, ottenendo così un nuovo vettore,

di lunghezza uguale, le cui componenti sono frutto dell’operazione.

Perciò, avendo un vettore x, se voglio usare una funzione su ogni componente del vettore

(ottenendo così un nuovo vettore), basta dichiarare la funzione normalmente, utilizzando però la

vettorializzazione delle operazioni. Per esempio:

( Elevare a potenza un vettore x, cioè ottenere un nuovo vettore con le singole componenti di x

elevate al dato esponente n, non è possibile farlo con si utilizza : )

x^n,

x.^n>> y=x.^n( Funzione con elevamento a potenza, divisione: )>> y=(1-3*x.^2)./(2-x.^3)y = 0.5000 0.4852 0.4418 0.3700 0.2686 0.1333

Estrarre parte delle componenti di un array, operatore :● :vettore:○ matrice: permette di estrarre sotto-matrici una matrice nota○ dove l’ordine degli indici è sempre (riga, colonna). Mettendo solo si intendono tutti gli:indici.

Autovalori e autovettori:● Norma di un vettore: comando● >> norm(vettore, tipo_di_norma)

Introduzione alla programmazioneSi utilizzano file di testo salvati con estensione .m , contengono le sequenze di comando da fare seguire alcalcolatore. I file .mat contengono variabili (salvate in un Workspace precedente) che così si possonoriutilizzare e/o modificare. Esistono due tipi di programmi:SCRIPT: lista di istruzioni tra cui funzioni predefinite e/o create dall’utente● FUNCTION: lista di istruzioni con variabili di input/output (opzionali)●Gli SCRIPT operano sulle variabili

contenute in memoria. Le variabili della FUNCTION sono locali e non restano in memoria dopo l'esecuzione della stessa. Lo scopo di una FUNCTION (funzione) è quello di prendere in input un certo numero di valori, fare alcune operazioni con tali argomenti e quindi restituire l'output. Sintassi della FUNCTION:

function [variabile/i output] = nome_function(variabile/i input)
    ...
end

I parametri di input e output vanno separati da virgole. Quando si salva una FUNCTION il nome del file .m dev'essere lo stesso dato alla funzione.

Funzione handle:

Funzione dichiarata senza l'utilizzo di uno script a parte (non salvata in un file .m). Una funzione handle è un tipo di dati di MATLAB che memorizza un'associazione ad una funzione. Chiamare indirettamente una funzione consente di richiamare la funzione indipendentemente da dove la si chiama. È possibile creare funzioni handle ("maniglie") per funzioni con nome (già definite, con la keyword function) anonime.

È possibile memorizzare più funzioni handle in un array e salvarle e caricarle, come si farebbe conqualsiasi altra variabile. Per creare una funzioni handle: f = @nome_funzione;

Si chiama una funzione utilizzando una funzione handle nello stesso modo in cui si chiama direttamente lafunzione. Un utilizzo frequente delle funzioni handle:

Funzione anonima: Una funzione anonima è una funzione MATLAB basata su una riga che non richiede un file di programma (niente script). È possibile creare funzioni handle per funzioni anonime. Sintassi: f=@(n) funzione Dove n è la variabile indipendente della funzione e funzione è la funzione scritta direttamente là n funzione

Visualizzazione grafica

Per la visualizzazione grafica di funzioni predefinite: Utilizzare la funzione per plottare grafico 2D. Definendo [a,b] l’intervallo di variazione della funzione fplotscalare, la sintassi di base è: fplot(nome_funzione, [a,b]) Traccia il

grafico usando una funzione definita in precedenza e l'intervallo, se non viene specificato dall'utente, la funzione y=f(x) verrà plottata nell'intervallo predefinito [-5,5]. Con plot si definisce la funzione genericamente (es. come una funzione anonima); si fplot passa un'altra funzione (quella d'interesse) a quella funzione "generica"; e si lascia che Matlab scelga i valori x e calcoli i valori y. Per la visualizzazione grafica di funzioni non predefinite: Funzione (principale function grafica di MATLAB) plot(x,y) Traccia il grafico usando direttamente due vettori già definiti, cioè produce il grafico dei punti (x , y ). I due vettori devono avere la stessa lunghezza (se uno è funzione dell'altro non ci saranno ovviamente problemi). Con fplot bisogna definire manualmente i valori del vettore x e scrivere la y corrispondente data dalla funzione. Alcune opzioni utili per la visualizzazione grafica: Specificare la<p>linea del grafico (colore, tipo di linea e simbolo):</p> <p>Esempio: linea di colore rosso tratteggiata e simbolo &ldquo;asterisco&rdquo;:</p> <pre>&gt;&gt; fplot(@(x) sin(x),[0,1],&rsquo;r--*&rsquo;)</pre> <p>Aprire pi&ugrave; finestre per plottare i grafici:</p> <ul> <li>: apre una figura generica</li> <li>&gt;&gt; figure : apre la figura n-esima (n numero di figura alla quale si &egrave; arrivati)</li> <li>&gt;&gt; figure(n)</li> </ul> <p>Aggiungere un titolo al grafico:</p> <pre>&gt;&gt; title(&rsquo;nome titolo&rsquo;)</pre> <p>Aggiungere etichetta all&rsquo;asse delle ascisse:</p> <pre>&gt;&gt; xlabel(&rsquo;nome assex&rsquo;)</pre> <p>Aggiungere etichetta all&rsquo;asse delle ordinate:</p> <pre>&gt;&gt; ylabel(&rsquo;nome assey&rsquo;)</pre> <p>Per aggiungere un grafico ad uno gi&agrave; utilizzato si usa il comando <code>hold onplot</code>, per smettere di tracciare sullo stesso grafico si utilizza invece il comando <code>hold off.plot(. . .)</code></p> <p>Formato di visualizzazione</p> <p>Usando il comando . . . si decide il formato di visualizzazione dei numeri, come il <code>format long</code>,</p>

shortnumero di cifre decimali visualizzabili dopo la virgola, oppure la notazione scientifica o esadecimale . . .

Notazione e (e-notation):

La notazione esponenziale serve per scrivere un elevamento a potenza del 10 (e = 10) e viene usata nellavisualizzazione dei numeri in notazione scientifica o più in generale per la precisione dei risultati (otolleranze): Sintassi:numeroe±n( Per esempio: 1e-4 = 10-4 ; 10e5=106 ; 5e-2 = 5*10-2 )

Operatori logici

Cicli For : il ciclo serve per ripetere le stesse istruzioni un certo numero di volte. La sintassi:● for“passo” significa di quanto mi sposto per iterazione, prima di arrivare al max, può essereomesso. Per esempio passo = 1 significa che ogni iterazione aumento di uno il miocontatore (contatore +1) , passo = 2, lo aumento di due (contatore +2).

While : Il ciclo serve per ripetere le stesse istruzioni fintantoché è vera una● whiledeterminata condizione. La sintassi:

Costrutto if

Il costrutto

Permette di verificare se un'espressione logica risulti vera o falsa. Se l'espressione è vera il programma esegue le istruzioni 1, altrimenti vengono eseguite le istruzioni 2. La sintassi:

Utilizzo di file esterni

Scrittura su file

Scrivere i risultati ottenuti (output) su un file di testo in modo tale da averli salvati esternamente da MATLAB e poterli così usare altrove. Il comando viene utilizzato così:

fopen()

Aprire/creare il file di testo:

>> fid = fopen('nomefile')

fid è una variabile (scelta da noi) scalare intera che identifica il file ("fid = file id"). Se il file esiste viene semplicemente aperto, altrimenti MATLAB lo crea.

Opzioni: si può scegliere come agire sul file

>> fid = fopen('nomefile', permesso)

Il permesso viene identificato tramite una lettera e rappresenta il comportamento che MATLAB avrà con il file:

permesso : writing (sovrascrive dati esistenti)

’w’permesso : append (scrive dati a partire dalla fine del file)

’a’permesso : read (legge solo il contenuto)

’r’Scrittura su file:

Dopo aver usato il comando fopen, si usa il comando fprintf per scrivere sul file, sintassi:

fprintf(fid,’formato’,variabili)

( Per esempio: )

fprintf(fid, '%d %.8f %.8f %.8e %.8e \n', 1, T, Q, ET(1), EQ(1));

Il file va chiuso dopo la scrittura: fclose(fid)

Caricare i dati

In molti casi, è utile caricare i dati in MATLAB direttamente da file di input (file di testo), evitando di inserirlicome visto precedentemente. Ci son due modi per farlo:

1) Carico due file distinti, ciascuno dei

Dettagli
Publisher
A.A. 2022-2023
11 pagine
SSD Scienze matematiche e informatiche MAT/08 Analisi numerica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Lovetarel di informazioni apprese con la frequenza delle lezioni di laboratorio di calcolo numerico e informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Padova o del prof Ferronato Massimiliano.