vuoi
o PayPal
tutte le volte che vuoi
Operazioni puntuali
Operazioni puntuali vengono eseguite componente per componente, cioè termine ij si relazione con il
rispettivo termine ij
• C = A .* B C(i,j) = A(i,j)*B(i,j)
• C = A./B C(i,j) = A(i,j)/B(i,j) per tutti gli indici i e j
• C = A .^B C(i,j) = A(i,j)^B(i,j) per tutti gli indici i e j . Ciascun elemento di A viene elevato a
potenza, con esponente l’elemento corrispondente di B. Le operazioni puntuali (elemento per
elemento) non hanno una corrispondente operazione nell’algebra lineare. Esistono solo per
facilitare la scrittura di alcune operazioni.
C = A & B and (vero solo se entrambe sono vere)
C = A | B or (vero se almeno una è vera)
C = A ~ B not
C = xor(A, B) or esclusivo (vero se solo una della due è vera)
Size [m,n] = size(A) con m il numero di righe ed n il numero di colonne come variabili di output separate.
Se invece chiedo D = size(A) con A matrice mxn ottengo un vettore riga D=[m,n] contenente il numero di
righe e colonne nella matrice.
• Posso mettere dim=size(A) e per il controllo su matrice quadrata metto if dim(1)~=dim(2) ad
esempio. Altrimenti m~=n se metto [m,n]=size(A)
Det D=det(A) calcola il determinante della matrice A
B=inv(A) è l’inverso della matrice A, con A matrice quadrata
Diag( ) , A=diag(d) genera matrice A diagonale, sulla base del vettore d che viene inserito sulla diagonale. Se
chiedo diag(a,1) il vettore a viene inserito sulla codiagonale superiore e cosi via oppure diag(a,-1) viene
inserito in codiagonale inferiore e cosi via.
V=diag(D) estrae la diagonale principale di D
W=diag(D,k) se k>0 estrae la k-esima diagonale superiore se k<0 estrae la k-esima diagonale inferiore
• D=diag(diag(A)) estrae vettore dalla diagonale e lo reinserisce in una matrice sulla diagonale
• A=diag(d)+diag(cinf,-1)+diag(csup,1) crea matrice tridiagonale
T=triu(A) estrae la parte triangolare sup di A. T è una matrice triangolare sup.
• T=triu(A,k) estrae gli elementi che sono al di sopra della k-esima diagonale di A.
• T=triu(A,-1)-triu(A,2) è matrice triadiagonale
T=tril(A) estrae gli elementi che sono al di sotto della k-esima diagonale di A.
R = rank(A) calcola il numero di righe linearmente indipendenti di A
N=norm(A,n) calcola norma n di A e se n=1 calcola norma1 se n=2 calcola norma2 o se n=inf calcola
normainfinito.
• norm(X) is the same as norm(X,2).
Zeros A=zeros(m,n) crea matrice mxn con tutti 0 . se metto solo zeros(m) crea matrice mxm invece
Ones A=ones(m,n) crea mamtrice mxn con tutti 1
D=eye(m,n) crea matrice con 1 in diagonale e resto 0
eig(A) dà in output un vettore le cui componenti sono gli autovalori della matrice A.
• Eigs(mat,m) restituisce gli autovalori più grandi in valore assolto della matrice.
magic(N) is an N-by-N matrix constructed from the integers 1 through N^2 with equal row, column, and
diagonal sums. Produces valid magic squares for all N > 0 except N = 2.
Help
Esegue quale operazione? Riceve quale input? Da quale output?
Ciclo forma annidata posso inserire quanti “elseif” voglio.
If condizione1
If condizione oppure
Blocco1
Blocco istruzioni Elseif cond2
Else If cond1
Blocco2
Blocco 2 Else if cond2
Else
end ….
Blocco3 end
end end
Errori
• Runtime , operazioni che non hanno senso (ex. Fare operazione puntuale tra matrici di dimensione
differente). Non tutti i runtime vengono riconosciuti da matlab.
A\B è in matlab il Metodo di eliminazione di gauss con pivoting parziale con A nxn matrice dei coefficienti
e B nx1 vettore dei termini noti.
Factorial factorial(N) for scalar N, is the product of all the integers from 1 to N
Sort(x) riordina in ordine crescente o discendente le componenti del vettore x o la matrice.
B=sort(A,DIM,’DIRECTION’) con ‘ascend’ che c’è di default oppure ‘descend’.
• [B,I] = sort(A,...) also returns a sort index I which specifies how the elements of A were rearranged
to obtain the sorted output B.
• Ex. Sort(nnz) riordina in modo crescente il vettore nnz e S e P sono : S il vettore riordinato e P il
vettore degli indici di riga che indica come sono stati riposizionate le componenti. Allora se ho
matrice A la ridefinisco cambiandone le righe con A=A(P,:) .
[S,P] = sort(nnz);
A=A(P,:);
max max(x) dà il valore del massimo degli elementi di x se x è vettore, se x è matrice max(x) è vettore riga
contenente il massimo elemento di tutte le colonne.
Se chiedo [m,p]=max(x) ottengo m massimo e p la posizione in cui compare m (se ci sono più di un m allora
p è la prima posizione assunta da m). Se invece chiedo max(X,Y) con X e Y vettori o cmq di dimensioni
compatibili, ottengo un vettore le cui componenti sono il massimo tra i valori delle componenti di X e Y.
min Smallest component. For vectors, min(X) is the smallest element in X. For matrices, min(X) is a row
vector containing the minimum element from each column. [Y,I] = min(X) returns the indices of the
minimum values in vector I.if the values along the first non-singleton dimension contain more than one
minimal element, the index of the first one is returned. min(X,Y) returns an array with the smallest
elements taken from X or Y. X and Y must have compatible sizes.
Contare il tempo
to=cputime Dt=ti-to Tic (avvia)
oppure
ciclo If Dt>T Toc (ferma, e calcola di suo il Dt)
ti=cputime Break
end
il tempo di esecuzione viene stampato sulla finestra dei comandi. (command window)
arresto? If abs(xn-c)<eps , Break , end
Assey assey=@(x)[0] per trovare lo 0
Definire funzione
f=’(x-1).^6’ o per 2 variabili f='x.*exp(-x.^2-y.^2)' oppure con anonymous function @ che è un puntatore
ad una funzione f=@(x)[(x-1).^6]
eval y=eval(f) o y=eval(f,x) valuta la funzione in ogni elemento di x.
(Codice sarebbe f=@.. ; x=linspace(e,r,t);y=eval(f) cioe y=f(x).)
Function files condivide solo input e output con la memoria principale
• Function[output1,output2]=nomefun(input1,input2)
• La funzione termina con l’ultima istruzione (nelle versioni più recenti di Matlab si consiglia l’uso del
comando end) oppure al primo eventuale comando return.
• Lo help della funzione lo scrivo con %
• Una funzione può contenere un’altra funzione (sotto-funzioni) mentre uno script può solo
richiamare funzioni memorizzate in altri file .m . Una sotto-funzione può essere richiamata solo
dalla funzione all’interno della quale è definita
input nome_variabile=input (‘ stringa di caratteri tra apici ’ )
vettori a piu dimensioni
con N=3 A(i,j,k) è vettore di matrici della stessa dimensione
• A(i,j,k) i = indice di riga j = indice di colonna della k-sima matrice contenuta nella k-sima
componente di A
Esempio: B = A(:,:,k) B è una matrice
a = A(i,j,k) a è l’ elemento avente indice di riga i e indice di colonna j della k-sima matrice di A
• In generale si può definire una struttura dati con N indici A(i,j,…….,k)
• I(3,2,1) estrae l’elemento di posizione (3,2) nella prima componente di I
fprintf fprintf(fid,’formato’,variabili) con variabili in ordine di come ho messo i formati.
• fprintf('un intero %d e una stringa %s\n', x, s) %10s visualizza una stringa di 10 caratteri
• %s stringa %6.2f visualizza un numero con 6 cifre di cui 2
• %d intero decimali
• %e notazione scientifica
• %f decimale %-5d visualizza un intero con 5 cifre allineato a
• %g compatta sinistra
• \n carattere di ritorno a capo
• \t carattere di tabulazione
fprintf('%d\t %3.2f\t %+6.5f\t %-6.5f\n',[(1:k);x;f1;f2])
n x(n) cos(x(n)) sin(x(n))
1 0.00 +1.00000 0.00000
2 0.63 +0.80902 0.58779
3 1.26 +0.30902 0.95106
Generata matrice le cui righe vengono lette per colonne fprintf !
fprintf('la soluzione del sistema è x= \n ')
fprintf('%+6.5f \n',x)
fid = fopen ('stringa', 'w') fid identifica il file di cui 'stringa‘ definisce il nome 'w‘ indica la modalità con
cui è aperto il file, ovvero scrittura fprintf(fid, 'formato', variabili) scrive nel file identificato dalla
variabile fid le variabili con il formato assegnato fclose (fid) chiude il file identificato da fid
• Fid1=fopen(‘exp.txt’,’w’)
Fscanf legge per righe CICLI
Cicli controllati for-end, cicli condizionati while-end, strutture condizionali if elseif else end, uscita
controllata break.
• Posso scrivere sulla stessa riga ma serve la virgola “,” di separazione.
• for ind=m:p:n , end cioè da m a n con passo p , oppure se metto ind=m:n sotto intendo passo p=1.
CRTL C blocca esecuzione
While a senza condizione lo fa fino a quando a non va a 0. Ad ex. [While a while b end end] , nel while
a(quando lo vede per la prima volta) while b (agisce ora su b finche b non è 0 e poi ma solo poi torna su a).
• while (err1>eps) & (err2>eps)
• while (err1>eps) | (err2>eps)
• inizializzare fuori dal ciclo while le variabili E1 e E2 e porle uguali al vettore vuoto, cioè E1=[]; E2=[];.
All’interno del ciclo while aggiungere le assegnazioni E1 = [E1 err1]); e E2 = [E2 err2]); subito dopo
le assegnazioni alle variabili err1 e err2
comandi generici
whose, whos is a long form of WHO. It lists all the variables in the current workspace, together with
information about their size, bytes, class, etc.
close ALL closes all the open figure windows.
Error error(‘ bla bla ‘) dà errore visualizzato in rosso
break consente di uscire in manier forzata da un ciclo, quando viene eseguito matlab salta direttamente
all’istruzione end con cui termina il ciclo.
• Terminate execution of WHILE or FOR loop. break terminates the execution of FOR and WHILE
loops. In nested loops, break exits from the innermost loop only. break is not defined outside of a
FOR or WHILEl oop. Use RETURN in this context instead.
• interrompe indipendentemente se è verificata una condizione in if…end. Implementa il metodo di
arresto a posteriori
Return interrompe immediatamente l’esecuzione del programma
• return causes a return to the invoking function or to the keyboard. Normally functions return
when the end of the function is reached. A return statement can be used to force an early return.
• Non prevede parametri di input. le istruzioni successive nello script non vengono proprio eseguite.
Polyfit , P = polyfit(X,Y,N) con X vettore dei nodi , Y vettore dei valori della funzione nei nodi e N il grado
del polinomio P. Output è proprio polinomio di grado N, P che è stato trovato con il metodo dei minimi
quadrati. P è vettore riga di lunghezza N+1 contenente i coefficienti del p