Operatori aritmetici, logici

Operatori aritmetici

X+Y  addizione (se x e y sono matrici devono avere lo stesso numero di righe e di colonne)

X.+Y  addizione elemento per elemento

X-Y  sottrazione (se x e y sono matrici devono averelo stesso numerodirighee di colonne)

X.-Y   sottrazione elemento per elemento

X*Y  moltiplicazione (se x ey sono matricidevono avere lo stesso numero dirighe e di colonne)

X.*Y  moltiplicazione elemento per elemento

X/Y  divisione (concettualmente uguale a (inverse(Y’)*X’))

X./Y  divisione elemento per elemento

X\Y  divisione sinistra (concettualmente uguale a(inverse(X)*Y))

X.\Y  divisione elemento per elemento

X^Y  potenza tra matrici o scalari

X**Y 

X.^Y  potenza elemento per elemento

X.**Y

-X  negazione

X’  trasposta

 

Operatori di comparazione

Gli operatori di comparazione danno come risultato 1 se la comparazione è vera, 0 se è falsa. Per le matrici gli operatori lavorano elemento per elemento.

Per esempio:

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

>>  ans 1 0

             0 1

X<Y  vero se x è minore di y

X<=Y  vero se x è minore o uguale a y

X= = Y  vero se x è uguale a y

X>=Y  vero se x è maggiore o uguale a y

X>Y  vero se x è maggiore di y

X !=Y  vero se x è diverso da y

X<>Y  vero se x è diverso da y

La funzione isequal (x1, x2, …) dà vero se tutti x1, x2, … sono uguali.

 

Operatori booleani elemento per elemento

Sono espressioni di comparazione che usano gli operatori booleani or, and (&), not(!). Un valore è falso se è 0, vero altrimenti (se è1).

 

Operatori di assegnazione

Un’assegnazione è un’espressione che memorizza un nuovo valore in una variabile.

Per esempio:

>>  z=1

Assegna il valore 1 alla variabile z.

“=” è chiamato operatore di assegnazione. L’assegnazione può assegnare anche stringhe.

Esempio:

>>  thing=”food”

>>  predicate=”good”

>>  message=[“this”,thing,”is”,predicate]

Assegna il valore “this food is good” alla variabile message (qui è illustrate anche la concatenazione di stringhe). La parte sinistra di un’assegnazione non può essere una variabile. Può anche essere un elemento di una matrice o una lista di valori di output. Questi sono tutti chiamati IVALUES e significa che possono apparire sulla parte sinistra dell’operatore di assegnazione. Se viene assegnato uno scalare ad un amatrice indicizzata questo pone tutti gli elementi chiamati dall’indice uguali al valore dello scalare.

 

Per esempio, se a è una matrice con almeno 2 colonne:

>>  a(:,2)=5

Pone tutti gli elementi nella seconda colonna di a uguali a 5. Assegnare una matrice vuota “[ ]” permette di cancellare righe o colonne della matrice o del vettore.

Per esempio, data una matrice A 4*5, l’assegnazione:

>>  A(3,:)=[ ]

Cancella la terza riga di a e l’assegnazione:

>>  A(:,1:2:5)=[]

Cancella la prima, terza e quinta colonna.

Un’assegnazione è un’espressione quindi ha un valore. Infatti ponendo

>>  z=1

È un’espressione che ha valore 1. Una conseguenza di ciò è che è possibile fare assegnazioni multiple contemporaneamente.

 

Esempio:

>>  x=y=z=0

Assegna il valore 0 in tutte e tre le variabili.

Si può anche assegnare una lista di valori:

>>  [a,b,c]=[u,s,v]=svd (a)

Che è equivalente a:

>>  [u,s,v]=svd (a)

>>  a=u

>>  b=s

>>  c=v

Il numero di valori sul lato sinistro dell’espressione non può eccedere il numero di valori sul lato destro. Per esempio la seguente espressine produce errore:

>>  [a,b,c,d]=[u,s,v]=svd (a)

>>  error: element number 4 undefined in return list

>>  error: evaluating assignment expression near line 8, coloumn 15

Un’assegnazione comune è quella di incrementare una variabile esistente con un valore dato, come:

>>  a=a+2

Che può essere scritto in modo più compatto con l’operatore +=

>> a+=2 

Operatori simili esistono anche per sottrazione, moltiplicazioni e divisioni.

Un’espressione della forma

 

>>  expr1 op= expr2

È valutata come:

>>  expr1=(expr1) op (expr2)

Dove op può essere un altro operatore come +, -, *, /.

 

Operatori di incremento

Incrementano o decrementano il valore di una variabile di 1. L’operatore di incremento è scritto “++”. Può incrementare la variabile prima o dopo che gli sia stato assegnato il valore. Per esempio, per preincrementare la variabile si scrive:

>>  ++x

Aggiunge1 a x e dà il nuovo valore di x come risultato dell’espressione. E’ uguale all’espressione

>> x0x+1

Per postincrementare una variabile si scrive:

>> x++

Aggiunge 1 alla variabile x, ma da il valore che x aveva prima dell’incremento.

Per esempio, se x=2, il risultato dell’espressione x++ è 2 e il nuovo valore di x è 3.

Per gli elementi della matrice e del vettore, gli operatori di incremento e decremento lavorano su ogni elemento dell’operando. Espressioni di incremento e decremento:

++x  incrementa la variabile x. Il valore dell’espressione è il nuovo valore di x. E’equivalente a x=x+1

–x  decrementa la variabile x. E’ equivalente a x=x-1

X++  porta la x a essere incrementata. Il valore dell’ espressione è il vecchio valore di x

x–  porta la x a essere decrementata. Il valore dell’espressione è il vecchio valore di x.

 

Operatori di precedenza

Determinano come gli operatori sono raggruppati, quando operatori diversi compaiono nella stessa espressione. Per esempio, * ha precedenza rispetto a 2+. Quindi l’espressione

>>  a+b*c

Significa moltiplicare b*c e aggiungere a al prodotto (a+(b*c)).

E’ comunque opportuno utilizzare le parentesi quando c’è una combinazione inusuale di operatori, in quanto chi legge il programma potrebbe non ricordare qual è la precedenza.

Commenti

commenti