Ecco un elenco di codici Matlab: - Calcolo valore assoluto (modulo) - Calcolo media e varianza - Concatenare stringhe e conversione da numero a stringa - Numero di Eulero - Modificare un file fig in Matlab - calcolo funzione di Eulero - calcolo massimo comune divisore con l'algoritmo di Euclide - creare un file e inserire dei dati - Salvare un file (con la finestra che ti fa scegliere nome e dove salvarlo) e passargli dei dati. - concatenazione di matrici - inserire un text-box e scrivere del testo dentro una figura - creare una tabella con uitable - Aggiornare dati nella uitable - calcolo della distanza euclidea - Per aggiungere un check box ad una figura - Callback di un check box - Carattere ' (apice/apostrofo) - Vettore con elementi distinti - errore "Array dimensions must match for binary array op" Confronto tra stringhe Si usa la funzione strcmp, che pre in ingresso le due stringhe. Restituisce 1 se sono equivalenti, 0 altrimenti. Esempio: strcmp ('.tiff', 'png') Calcolo valore assoluto (modulo) Si usa la funzione abs. Esempio: Y = abs(x) Calcolo della media e della varianza Dato un insieme di numeri X, la media si calcola con la funzione mean, mentre la varianza con la funzione var media_x=mean(x); 1 / 11
varianza_x=var(x); Concatenare stringhe e conversione da numero a stringa Basta usare la funzione strcat. Esempio: for k=1:4 name=strcat('img',num2str(k),'.bmp') name=strcat('original',name) Restituirà: name = Img1.bmp name = img2.bmp name = Img3.bmp name = Img4.bmp 2 / 11
name = OriginalImg4.bmp Da notare che è stata usata anche la funzione num2str che serve a convertire un numero in una stringa. Numero di Eulero Per usare il numero di Eulero (conosciuto come e oppure come la base dei logaritmi Neperiani) in Matlab si usa exp. Esempio: exp(1) ans = 2.7183 Calcolo funzione di Eulero La funzione phi di Eulero φ(n), detta anche funzione totiente viene definita come il numero degli interi positivi minori di un intero positivo n tali che sono coprimi con n, cioè il MCD (massimo comune divisore) è 1. Codice function f_eulero(n) phi=0; for i=1:(n-1) MCD=gcd(n,i); %calcola il massimo comune divisore if (MCD==1) phi=phi+1; phi=phi 3 / 11
Calcolo massimo comune divisore con algoritmo di Euclide L' algoritmo di Euclide è uno degli algoritmi più antichi conosciuti: dati due numeri interi trova il massimo comune divisore (MCD). Teno nota dei quozienti ottenuti durante lo svolgimento dell'algoritmo, si possono determinare due interi p e q tali che ap + bq = MCD( a, b ). Questo è noto con il nome di algoritmo di Euclide esteso. Questi algoritmi possono essere usati, oltre che con i numeri interi, in ogni contesto in cui è possibile eseguire la divisione col resto, per esempio funziona anche nel caso di polinomi su un campo K. function f_euclide(a,b) while (a ~= b) if a > b a = a - b; else b = b - a; display ('il massimo comun divisore è :') MCD=a Creare un file ed inserire dei dati Con queste poche righe possiamo vedere come fare a creare un file ed inserirci dei dati (in questo caso degli esponenziali). 4 / 11
x = 1 : 0.1 : 2 ; A = [ x ;exp(x) ]; fileprova = fopen ( 'C:Matlab7workAIVProveprova2.txt', 'wt'); fprintf ( fileprova,'%6.2g %8.4gn', A); fclose (fileprova); Salvare un file (con la finestra che ti fa scegliere nome e dove salvarlo) e passargli dei dati. Con il comando uiputfile apro la finestra che mi farà scegliere dove salvare il file (percorso) e il nome. Poi uso save al quale gli passo percorso e nome del file (tra parentesi quadre così li concatena) e i dati. I dati passati devono avere gli apici perchè devono essere stringhe. Esempio: A=[10,2,40;35,35,11;5,7,11] [ filename, pathname] = uiputfile(... '*.mat', 'Save features' ); if ischar(filename); save([pathname filename],'a'); Concatenazione di matrici Basta creare la prima matrice e concatenarla nella seconda aggiungo le colonne necessarie per fare una nuova matrice. Esempio molto chiaro: 5 / 11
A=[1 2 3; 4 5 6] B=[A; 9 9 9] Viene B = 1 2 3 4 5 6 9 9 9 Inserire un text-box e scrivere testo dentro una figura Si crea la figura e poi il box per il testo. E' possibile settare la posizione (devo passargli 4 parametri: posizione lungo l'asse x, lungo l'asse y, larghezza e altezza del box) e la stringa. mfigure = figure(); mtextbox = uicontrol('style','text'); set(mtextbox,'position',[20 20 50 50]); set(mtextbox,'string','hello World'); Creare una tabella (con il comando uitable) Basta fare questi due passi: 6 / 11
1) creare una figura; 2) lanciare il comando uitable, passandogli la figura, le righe della tabella (per separare le righe usare ;) e il nome delle colonne. Nell'esempio creo una tabella di due righe e tre colonne che si chiamano A, B e C. f = figure; t = uitable(f, [0 1 2 ; 4 3 4], {'A', 'B', 'C'}); Aggiornare dati nella uitable Dopo aver creato la uitable si utilizza il metodo setdata. Esempio figure(); t = uitable({'a', 'b'}, {'col_1', 'col_2'}) t.setdata({'c', 'd'}) 7 / 11
Calcolo della distanza euclidea Calcolare la differenza Euclidea riga per riga di una matrice. Sia x=[x1 x2 x3] e sia y=[y1 y2 y3] Allora la differenza euclidea è: diff_eucl= sqrt ( (x1-y1)^2 + (x2-y2)^2 + (x3-y3)^2 ) dove con sqrt indico la radice quadrata e con ^ l'elevamento a potenza (in questo caso al quadrato). Codice Dati=[1,3,2;0,0,0;2,5,3] for i=1:3 for j=1:3 quaddiff=0; for k=1:3 quaddiff=quaddiff+(dati(i,k)-dati(j,k))^2; disteucl(i,j)=sqrt(quaddiff); disteucl=disteucl Per aggiungere un check box ad una figura 8 / 11
f= figure(); h = uicontrol('style', 'checkbox','string', 'Selezionami',... 'Position', [430 250 100 20]); Callback di un check box In questo si vuole creare una figura con un check box. Se il check box viene selezionato si stampa a video la scritta "Hello!Apollo14". f= figure(); h = uicontrol('style', 'checkbox','string', 'Normalizzata',... 'Position', [430 250 100 20]); set(h,'callback','display Hello!Apollo14') Carattere ' (apice/apostrofo) Basta usare tre apici di seguito: ''' uno per aprire la stringa uno per il carattere ' e l'ultimo per chiudere la stringa. Se volessi scrivere {'1','2'} b=['{' '''1''' ',' '''2''' '}'] b = {'1','2'} Vettore con elementi distinti Data una matrice di elementi ottenere un vettore con tutti gli elementi distinti della matrice. 9 / 11
Esempio: => x = [10 30 23 9 15 8] unique(a(:).') Errore "Array dimensions must match for binary array op" Si verifica quando tentiamo un confronto tra due stringhe di lunghezza diversa. Esempio: st='ci' st2='ciao' st==st2 Con questo codice errore "Array dimensions must match for binary array op" perchè st un array di due, st2 è di quattro. Basta vederlo con size ( size(st), size(st2) ). 10 / 11
Questo/a opera è pubblicato sotto una Licenza Creative Commons. 11 / 11