Sei sulla pagina 1di 5

MATLAB 1 - introduzione

Per eliminare la ripetizione del comando inserito basta mettere il punto e virgola ; subito dopo il comando.

VARIABILI

Matlab utilizza un linguaggio basato sul C, ma a differenza di quest’ultimo non è fortemente

tipizzato. Quindi per dichiarare le variabili non v’è bisogno di usare dichiarazioni del tipo int,

char, etc

ma basta semplicemente usare la variabile assegnandole un valore:

• a = 2 ;

• r = 8.91;

• stringa1 = ‘ciao’;

N.B. Matlab per memorizzare le stringhe utilizza la sintassi apici ‘ … ‘ ; inoltre di default Matlab

mostra solo

le 4 cifre decimali dopo la virgola. Per estendere la visualizzazione delle cifre decimali basta usare il comando format long; per ritornare alla solita visualizzazione a 4 cifre decimali basta usare il comando format short.

C’è da dire che Matlab vede tutte le variabili come delle matrici: i vettori sono matrici Nx1 oppure 1xN, a seconda che siano vettori riga o colonna; analogamente gli scalari sono delle matrici 1x1.

VETTORI

Per dichiarare un vettore, la sintassi è:

• a = [1 2 3 4 5] oppure a = [1, 2, 3, 4, 5]

• a = [1; 2; 3; 4; 5]

VETTORE RIGA 1x5 VETTORE COLONNA 5x1

N.B. I vettori, come nel C, hanno gli indici per referenziare un determinato elemento; a differenza del C però gli indici dei vettori di Matlab hanno una numerazione che parte da 1 invece che da 0.

E’ possibile dichiarare dei vettori costruiti in modo particolare, ad esempio viene usata la sintassi:

• a = [1:0.1:10]

per costruire un vettore che abbia come valore iniziale 1, come valore finale 10, costellato da un tot di elementi intermedi che distano tra loro 0,1. (cioè di passo 0,1) – buon metodo per discretizzare il tempo, ad esempio.

• a = linspace(1, 10, 91)

per costruire un vettore riga con valore minimo 1, valore massimo 10, spaziati con 91 punti intermedi.

Per accedere ad uno o più elementi del vettore, la sintassi è:

• a(4)

accesso al 4° elemento del vettore

• a(2:5)

si prendono i considerazioni gli elementi dal 2° al 5°

• a([2:5], 7)

si prendono i considerazioni gli elementi dal 2° al 5° più il 7°

• a(4:2:10)

si prendono i considerazioni gli elementi dal 4° al 10° con passo 2

MATRICI

Per dichiarare una matrice, la sintassi è:

oppure

Per accedere ad un elemento della matrice, la sintassi è:

a = [1 2; 3 4]

a = [1, 2; 3, 4]

MATRICE 2x2

• a(1, 2);

N.B. Le matrici devono avere le dimensioni corrette; le dimensioni devono coincidere sempre

per ogni riga o colonna.

E’ possibile concatenare in modo semplice stringhe, vettori e matrici (purché le dimensioni di quest’ultime siano rispettate); eccone degli esempi:

a = [1, 2]

….

a = [a, 3]

si ottiene il vettore 1x3 [1, 2, 3]

a = [[1; 3], [2; 4]] formare una matrice

concatenazione di 2 vettori colonna per

str = ‘Pippo’

…. [str ‘e Pluto’]

concatenazione di 2 stringhe

NUMERI COMPLESSI

La sintassi per dichiarare numeri complessi è:

x = 3 + 4i

oppure

x = 3 + 4j

N.B. I caratteri i e j sono utilizzare per identificare l’unità immaginaria. Non possono quindi

essere utilizzati come variabili.

COMANDI UTILI

clear a

cancella la variabile

a

dal workspace

clear all

cancella tutte le variabili dal workspace

clc

cancella solo i comandi scritti video, conserva i valori delle

variabili

doc + funzione

comando che restituisce la documentazione della determinata

funzione

a = ones(10, 1)

costruisce un vettore colonna formato da 10 elementi di

valore pari a 1

 

a = ones(1, 10)

costruisce un vettore riga formato da 10 elementi di valore

pari a 1

a = ones(5, 6)

costruisce una matrice 5x6 formato da elementi di valore

pari a 1

a = zeros(10, 1)

costruisce un vettore colonna formato da 10 elementi di

valore pari a 0

 

a = zeros(1, 10)

costruisce un vettore riga formato da 10 elementi di valore

pari a 0

a = zeros(5, 6)

costruisce una matrice 5x6 formato da elementi di valore

pari a 0

disp(‘ciao’)

stampa a video la stringa tra apici

round(3.6)

arrotonda il valore all’intero più vicino; in questo caso 4.

floor(3.6)

arrotonda il valore per difetto; in questo caso 3.

ceil(3.6)

arrotonda il valore per eccesso; in questo caso 4.

fix(3.6)

prende in considerazione la parte reale del valore; in questo

caso 3.

real(3 + 4i)

prende in considerazione la parte reale del valore; in questo

caso 3.

imag(3 + 4i)

prende in considerazione la parte immaginaria del valore; in

questo caso 4.

• factorial(3)

• sqtr(24)

• angle(x)*180/pi

 funzione che realizza il fattoriale di 3.

 funzione che realizza la radice quadrata di 24.

 angolo x in radianti.

OPERAZIONI CON LE MATRICI

a = 2 < 3

confronta i valori, a = 1 se la

disequaz. è vera, a = 0 altrimenti

 

a = [2, 6]

b = 3

c = a + b

somma valore a valore:

c = [5, 9]

a = [2, 6]

b = 3

c = a - b

somma valore a valore:

c = [-1, 3]

a = [2, 6]

b = [2, 4]

c = a + b

somma valore corrispondente: c =

[4, 10]

 
 

a = [2, 6]

b = [2, 4]

c = a - b

sottrazione valore corrispondente: c

=

[0, 2]

a = [2, 6]

b = [2, 4]

c = a * b

prodotto valore corrispondente: c =

[4, 24] – solo stesse dimens.

 
 

a = [2, 6]

b = [2, 4]

c = a / b

quoto valore corrispondente: c = [1,

0.5] – solo stesse dimens.

 

valore:

a = [2, 6] d = [4, 36]

d = a.^2

 

elevazione al quadrato valore per

 

a = [2, 6]

… min(a)

 

valore minimo del vettore a;

restituisce uno scalare: 2

 
 

a = [2, 6]

… max(a)

 

valore massimo del vettore a;

restituisce uno scalare: 6

 
 

a = [2, 6]

… [v, ind] = min(a)

in v c’è il minimo di a, in ind l’indice in

cui si trova il valore: [2, 1]

 
 

a = [2, 6]

… [v, ind] = max(a)

in v c’è il massimo di a, in ind l’indice

in cui si trova il valore: [6, 2]

 
 

a = [2, 6]

find(a > 4)

 

dà gli indici per i valori di a > 4,

restituisce un vettore riga

 
 

a = [2, 6]

… a(find(a > 4))

 

dà i valori di a > 4, restituisce un

vettore riga

 
 

• b.’

 

traspone un vettore o una matrice

a = [2, 6]

• … sum(a)

 

somma tutti gli elementi di a. Somma

=

8.

• … prod(a)

a = [2, 6]

 

moltiplica tutti gli elementi di a.

Prodotto = 12.

 Data la matrice c = [3, 4; 2, 5]

 

• c(:)

trasforma la matrice in un vettore colonna

• c(:).’

trasforma la matrice in un vettore colonna, poi la

traspone in un vettore riga

 
 

sum(c, 1)

somma la matrice lungo le colonne; restituisce un

vettore riga - [5, 9]

 
 

sum(c, 1)

somma la matrice lungo le righe; restituisce un

vettore colonna - [7; 7]

 
 

• sum(sum(c))

somma la matrice in un unico risultato; esso è 14.

• min(c)

trova il minimo della matrice; restituisce un

vettore riga/colonna - [2; 3]

 
 

max(c)

trova il massimo della matrice; restituisce un

vettore riga/colonna - [4; 5]

 
 

min(min(c))

trova il minimo assoluto della matrice. Restituisce

uno scalare:

2.

max(max(c))

trova il massimo assoluto della matrice. Restituisce

SCRIPT: file in cui c’è codice, che non ha variabili d’ingresso o d’uscita (cioè non è una funzione); quando lo si richiama usa le variabili del workspace ed eventualmente le modifica.

CREAZIONE FUNZIONE – ESEMPIO

Il nome della funzione DEVE essere uguale al nome del file su cui è salvata la suddetta.

function [r] = sommaProdotta(x, op)

if op = 0

% SOMMA

disp(‘OPERAZIONE: somma degli elementi di un vettore’);

r = sum(x);

elseif op = 1

% PRODOTTO

disp(‘OPERAZIONE: prodotto degli elementi di un vettore’);

r = prod(x);

 

else

end

end

error((‘Opzione op =’, num op, ‘non contemplata.’); % end if % end function

-------------------------------------------------------------------------------------------------------------------------------------

------------------------function [somma, prodotto, spar, ppar]= EsempioWhile(a) %Struttura while. indice = 1; somma = 0; prodotto = 1; ac = -1; spar = []; ppar = []; while ac < 5 ac = a(indice); somma=somma+ac; prodotto=prodotto*ac; spar = [spar,somma]; ppar = [ppar,prodotto]; indice = indice+1; end

-------------------------------------------------------------------------------------------------------------------------------------

------------------------

function [C] = CreaMatriceTriang(a)

l=length(a); %Struttura for. C = zeros(l); for ii=1:l, for jj=ii:l,

C(ii,jj)=2*a(jj­ii+1);

end

end

-------------------------------------------------------------------------------------------------------------------------------------

------------------------