Category Archives: Matlab

Le operazioni in Matlab

MATLAB

In MATLAB sono definite le seguenti operazioni aritmetiche:

1) addizione +
2) sottrazione –
3) moltiplicazione *
4) divisione /
5) elevamento a potenza ˆ

Quando l’espressione da valutare è troppo lunga per stare su di un’unica riga di comando,risulta possibile utilizzare un carattere di continuazione dato da . . . (tre punti). Ad esempio:

>> 1 + 1/4 + …
1/8

ans =

    1.3750

E’ possibile verificare che poichè in MATLAB non vi è alcuna distinzione tra variabili intere, reali o complesse, il risultato dell’operazione di elevamento a potenza nel caso di esponenti frazionari può non corrispondere a quello naturalmente atteso. Ad esempio, volendo calcolare la radice cubica di -5, si ottiene:

>>  (-9)^(1/5)

ans =

   1.2555 + 0.9122i

quindi un numero immagginario al posto di un numero reale. Il problema è dovuto al fatto che MATLAB, lavorando in notazione complessa, calcola come prima radice cubica di -9 una delle due con parte immaginaria non nulla.

Anche in MATLAB è possibile alterare le precedenze classiche delle operazioni aritmetiche mediante l’uso opportuno delle parentesi tonde. Ad esempio, se nel caso precedente si fosse scritto ( – 9)*1/5 si sarebbe ottenuto il valore -1.8000 ossia, giustamente, – 9/5.

>> (- 9)*1/5

ans =

   -1.8000

operazioni.matlab

Per quanto riguarda i vettori, le operazioni elementari si estendono (quando ben definite) in modo del tutto naturale, con l’eccezione delle operazioni di divisione e di elevamento a potenza. Ad esempio,

>> a = [1:4];
>> b = [1:3];
>> c = [3 2 6 -1] ;

>> a+c (somma di vettori riga)

ans =

     4     4     9     3

>> a-c (differenza di vettori riga)

ans =

    -2     0    -3     5

>> a+b
??? Error using ==> plus
Matrix dimensions must agree.
 
>> a*c
??? Error using ==> mtimes
Inner matrix dimensions must agree.

Le ultime istruzioni ci indicano che, le operazioni fra vettori sono valide solo se le dimensioni sono consistenti. Infatti, dato un vettore riga s di dimensione n (ossia una matrice 1 * n) ed un vettore colonna d di dimensione m, si potrà eseguire il prodotto scalare s*d solo se m=n (ottenendo in tal caso uno scalare).

>> s=[1:4];

>> d=[1;2;3;4];

>> s*d

ans=
             30

Quindi d*s fornirà una matrice m*n.

>> s=[1:4];

>> d=[1;2;3;4];

>> M=d*s

M =

     1     2     3     4
     2     4     6     8
     3     6     9    12
     4     8    12    16

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

MATLAB

Operatore due punti in Matlab

MATLAB

L’operatore : (due punti)
L’operatore due punti rappresenta uno dei più importanti operatori di MATLAB. Si trova in molte forme diverse. Ad esempio l’espressione seguente:

1:10

rappresenta un vettore riga che contiene i numeri interi da 1 a 10

1 2 3 4 5 6 7 8 9 10

Per ottenere una specifica sequenza invece, si deve indicare un incremento. Per esempio:

>> 100:-7:50

ans =

   100    93    86    79    72    65    58    51

cioè una sequenza di numeri da 100 a 50 con passo uguale a -7; mentre

>> 0:pi/4:pi

ans =

         0    0.7854    1.5708    2.3562    3.1416

operatore.matlab
Le espressioni sottoscritte che coinvolgono l’operatore due punti assegnano porzioni di una matrice. Ad esempio assegniamo la solita matrice:

A=[1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16]

ed estraiamone alcuni valori:

A(1:k,j)

rappresenta i primi k elementi della colonna jth di A. Allora estraiamo alcuni elementi:

>> A(1:4,4)

ans =

     4
     8
    12
    16

e calcoliamo la somma della quarta colonna.

>> sum(A(1:4,4))

ans =

    40

Il due punti assegna tutti gli elementi in una riga o colonna di una matrice e la keyword END  assegna l’ultima riga o colonna. Così

>> sum(A(:,end))

ans =

    40

calcola la somma degli elementi nell’ultima colonna di A.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Accesso agli elementi di una matrice in Matlab

MATLAB

Come accedere agli elementi di una matrice in Matlab

Vediamo in questa lezione come accedere agli elementi di una matrice in ambiente Matlab; per prima cosa quindi inseriamo nel workspace di Matlab una matrice di esempio:

>> A=[1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16]

A =

     1     2     3     4
     5     6     7     8
     9    10    11    12
    13    14    15    16

L’elemento in riga i e colonna j di A è denotato con il simbolo A(i,j). Ad esempio:

>> A(4,2)

ans =

    14

è il numero nella quarta riga e seconda colonna. Per la nostra matrice corrisponde a 14. Così risulta possibile calcolare la somma degli elementi nella quarta colonna di A digitando:

A(1,4) + A(2,4) + A(3,4) + A(4,4)

Questo produce:

>> A(1,4) + A(2,4) + A(3,4) + A(4,4)

ans =

    40

ma non è il modo più elegante di sommare una singola colonna. E’ anche possibile per accedere agli elementi di una matrice utilizzare un singolo pedice, A(k). Questo è il modo solito di accedere agli elementi di vettori riga e vettori colonna.

elementi.matlab

Ma si può anche applicare ad una matrice bidimensionale in questo caso la matrice è considerata come un vettore colonna, formato dalle colonne della matrice originale. Così, per la nostra matrice, A(8) è un altro modo di individuare il valore 14 immagazzinato nella posizione A(4,2), cioè quarta riga seconda colonna.

>> A(8)

ans =

    14

Se si tenta di accedere agli elementi di una matrice al di fuori di essa, si commette un  errore:

>> t = A(4,5)
??? Attempted to access A(4,5); index out of bounds because size(A)=[4,4].

(Messaggio di errore)

D’altra parte, se si immagazzina un nuovo valore in un elemento della matrice che eccede il suo ordine, c’`e un aumento dell’ordine per accomodare il nuovo venuto:

>> A(4,5) = 17

A =

1     2     3     4     0
5     6     7     8     0
9    10    11    12     0
13    14    15    16    17

I vettori vengono trattati in Matlab in modo del tutto analogo. È possibile visualizzare le singole voci di un vettore, dopo averlo definito nel modo seguente:

V=[2 1 3 4];

per visualizzare la prima voce è sufficiente digitare:

>> V (1)
ans =
2

Questo comando stampa il primo elemento nel vettore. Si noti inoltre che una nuova variabile chiamata ans è stata creata.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

La matrice di Durer in Matlab

MATLAB

La matrice di Durer è quello che in gergo si chiama un quadrato magico. Un quadrato magico è uno schieramento di numeri interi distinti in una tabella quadrata tale che la somma dei numeri presenti in ogni riga, in ogni colonna e in entrambe le diagonali dia sempre lo stesso numero; tale intero è denominato la costante di magia o costante magica o somma magica del quadrato.

Inseriamo la matrice di Durer:

A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]

Verifichiamo tutto quello appena detto sui quadrati magici, usando MATLAB. Il primo tentativo è il seguente:

sum(A)

MATLAB risponde con:

ans = 34 34 34 34

Quando non si specifica una variabile di output, MATLAB usa la variabile ans, per immagazzinare i risultati di un calcolo. Si è in questo modo calcolato un vettore fila che contiene certamente le somme delle colonne di A; ogni colonna ha la stessa somma, la somma magica, 34.

Cosa si può dire sulle somme delle righe? MATLAB ha una preferenza per lavorare con le colonne di una matrice, cosìı il modo più facile per ottenere le somme delle righe è quello di trasporre la matrice. Trasponiamo allora la matrice e facciamone la somma.

L’operazione di trasposizione si ottine aggiungendo un apostrofo alla matrice da trasporre, ad esempio:

A’

determina il risultato seguente:

ans = 16 5 9 4
3 10 6 15
2 11 7 14
13 8 12 1

e

sum(A ‘) ‘

produce un vettore colonna che contiene le somme delle righe:

ans = 34 34 34 34

durer

La somma degli elementi della digonale principale è ottenuta facilmente con l’aiuto della funzione diag che estrae solo gli elementi dellla diagonale.

diag(A)

produce:

ans = 16 10 7 1

e

sum(diag(A))

produce:

ans = 34

L’altra diagonale, l’antidiagonale così chiamata non è così importante e MATLAB non ha una funzione immediata per calcolarla. Ma una funzione originariamente creata per il suo uso in grafica, fliplr riporta una matrice da sinistra a destra.

sum(diag(fliplr(A)))
ans = 34

Si è così verificato che la matrice di Durer è davvero una magic square e, nel processo, si sono utilizzate operazioni sulle matrici di MATLAB.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Immettere matrici in Matlab

MATLAB

Si possono immettere matrici in MATLAB in molti modi diversi.

  • – introdurre un elenco esplicito di elementi.
  • – caricare matrici da files di dati esterni.
  • – generare matrici utilizzando la funzione built-in.
  • – creare matrici con le proprie funzioni in M-files.

Iniziamo a far vedere come registrare la matrice come un elenco dei suoi elementi. Si seguano a tal proposito solamente alcune convenzioni di base:

  • Separare gli elementi di una riga con spazi vuoti o virgole.
  • Usare un punto e virgola ”;” per indicare la fine di ciascuna fila.
  • Racchiudere l’elenco intero di elementi con parentesi quadrate , [ ].

matrici.matlabPer registrare la matrice di Durer,basterà semplicemente digitare:

A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]

MATLAB espone a video solo la matrice digitata,

A = 16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1

Questo procedimento associa precisamente i numeri a porzioni di memoria. Una volta fornita la matrice, essa è registrata automaticamente nel workspace di MATLAB. Ora si può indicarla semplicemente digitando al prompt di Matlab la lettera A.

>> A

A =

    16     3     2    13
     5    10    11     8
     9     6     7    12
     4    15    14     1

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

MATLAB – Guida all’uso

MATLAB
Una guida all’uso del software matematico MATLAB, pensata per gli utenti inesperti che si avvicinano per la prima volta al suo utilizzo, ma utile anche a chi è già pratico come ausilio allo sviluppo delle sue competenze. Il libro è strutturato in modo tale che il lettore possa apprendere gradualmente le nozioni di base per il corretto utilizzo del software, e in seguito, tramite la soluzione dei più diffusi problemi di calcolo numerico, acquisire padronanza nella gestione della simulazione numerica di modelli matematici. Il testo è valido per qualsiasi versione di MATLAB: gli esempi sono basati sulla versione 7.x ma sono compatibili anche con le versioni precedenti.

libromatlabDettagli del libro

  •     Titolo: Matlab – Guida all’uso
  •     Autore: Giuseppe Ciaburro
  •     Editore: FAG
  •     Collana: Pro DigitalLifeStyle
  •     ISBN: 8882336425
  •     ISBN-13: 9788882336424
  •     Pagine: 251
  •     Formato: brossura

Giuseppe Ciaburro ingegnere chimico, svolge la sua attività di tecnico presso la Seconda Università degli Studi di Napoli. Esperto di acustica, vanta una vasta esperienza nella docenza di corsi professionali di informatica e nel campo dell’e-learning; autore e titolare del sito www.ciaburro.it.

Matlab. Versione 7.x e precedenti. Guida all’uso

Caratteristiche di Matlab

MATLAB

MATLAB rappresenta un linguaggio ad alto rendimento per la computazione tecnica. Esso integra il calcolo, la visualizzazione e la programmazione in un ambiente di facile impiego in cui i problemi e le soluzioni sono espressi in notazione matematica familiare. E’ strutturato secondo il seguente schema:

  •  Matematica e calcolo.
  •  Sviluppo di procedura.
  •  Modellistica, simulazione e prototyping.
  •  Analisi di dati,esplorazione e visualizzazione.
  •  Disegno industriale e scientifico.
  •  Sviluppo di applicazione, compreso la costruzione grafica dell’ interfaccia di utente.

MATLAB è un sistema interattivo in cui l’elemento di base è un array quindi non richiede il  dimensioning. Ciò permette la risoluzione di molti problemi di calcolo tecnici, in particolare quelli con le formulazioni vettorali e matriciali, attraverso algoritmi molto pi`u semplici e snelli rispetto a quelli che sarebbero necessari in un programma in linguaggio scalare non interattivo quali C o il fortran.

Il nome MATLAB corrisponde all’acronimo di laboratorio della matrice. MATLAB era stato originalmente scritto per fornire facile accesso al software delle matrici; si è sviluppato dal LINPACK e dal EISPACK, che rappresentano insieme la punta del progresso software per il calcolo delle matrici. MATLAB si è evoluto durante gli anni con input da molti utenti.In ambienti universitari `e l’attrezzo didattico standard per corsi introduttivi e corsi avanzati, nella matematica, nell’ingegneria e nella scienza.

matlab

La finestra di avvio di Matlab

MATLAB caratterizza una famiglia delle soluzioni application-specific denominate toolboxes. Molto utile per la maggior parte degli utenti di MATLAB, toolboxes, fornisce le basi per applicare la tecnologia specializzata.I toolboxes sono collezioni complete di funzioni MATLAB (M-files)che estendono l’ambiente di MATLAB per risolvere particolari categorie di problemi.Gli ambienti in cui i toolboxes sono disponibili sono:

  •  elaborazione dei segnali,
  •  sistemi di controllo,
  •  reti neurali,
  •  logica incoerente,
  •  wavelets,
  •  simulazione e molti altri.

Come definire una funzione in Matlab

MATLAB

In questa lezione impareremo come definire una funzione in Matlab. Le Funzioni ci danno la possibilità di estendere le potenzialità di MATLAB. È possibile creare nuove funzioni specifiche per il problema che poi assumono lo stesso status delle altre funzioni di MATLAB. Le variabili in un file di funzione sono locali per impostazione predefinita. Tuttavia, dalla versione 4.0 di Matlab ci è permesso di utilizzare una variabile da dichiarare globale.

Le Funzioni sono M-file che possono accettare argomenti d’entrata e forniscono argomenti di uscita. Il nome dell’M-file e della funzione deve essere lo stesso. Le Funzioni operano su variabili definite nel workspace proprio, separato dal workspace a cui si accede all’ingresso di MATLAB, cio`e le variabili usate all’interno della funzione sono locali.

Vediamo come scrivere una una funzione con parametri in ingresso e parametri in uscita. Si voglia costruire una funzione che, dati i lati ”a” e ”b” di un rettangolo fornisca l’area ”A”, il perimetro ”p” e la diagonale ”d”. Indichiamo con (a; b) la lista d’ingresso (parentesi tonde) e con [A; p; d] la lista d’uscita (parentesi quadre) (si noti la virgola fra i parametri).

function [ A , p , d ] =rettang ( a , b )
A = a * b;
p = 2 * ( a + b );
d =sqrt ( a^2 + b^2 );

Si noti che non c’e’ confusione tra la lettera A e la a perche’ MATLAB distingue le lettere maiuscole dalle minuscole. Questa function, salvata con il nome rettang.m puo’ essere richiamata da un altro modulo o direttamente dalla finestra comandi ad esempio con il comando:

[area; perim; diag] =rettang(2; 3)

Quindi la sintassi e’ la seguente:

function [lista d’uscita] = nome (lista d’ingresso)

L’uso delle funzioni ci permette di racchiudere un algoritmo complesso in un singolo script allo scopo di riutilizzare lo stesso magari in un’altra applicazione. Nella programmazione procedurale si fa largo uso delle funzioni, e spesso è possibile utilizzare delle funzioni già disponibili, magari recuperate su internet in modo da semplificarci il lavoro.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

La variabile nargin

MATLAB

Nel corpo di un funzione nargin e nargout indicano quanti argomenti di ingresso o di uscita, rispettivamente, un utente ha in dotazione. Al di fuori del corpo di una funzione, nargin e nargout indicano il numero di argomenti di ingresso o di uscita, rispettivamente, per una determinata funzione.
Il numero degli argomenti è negativo se la funzione ha un numero variabile di argomenti.
– nargin restituisce il numero di argomenti di input specificato in una funzione.
– nargin (fun) restituisce il numero di ingressi dichiarati per la funzione fun.
Se la funzione ha un numero variabile di argomenti di input, nargin restituisce un valore negativo. Fun può essere il nome di una funzione, o il nome della funzione che gestisce quella mappa per funzioni specifiche.
– nargout restituisce il numero di argomenti di uscita specificato per una funzione.
– nargout (fun) restituisce il numero di uscite dichiarate per la funzione fun.
Se la funzione ha un numero variabile di argomenti di output, nargout restituisce un valore negativo. Fun può essere il nome di una funzione, o il nome della funzione che gestisce quella mappa per funzioni specifiche.