Codici Matlab
Scritto da ventus85
Martedì 24 Giugno 2008 23:22
Ecco un elenco di codici Matlab:
dati.
-
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
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 prende 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
Codici Matlab
Scritto da ventus85
Martedì 24 Giugno 2008 23:22
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')
end
name=strcat('Original',name)
Restituirà:
name =
Img1.bmp
name =
img2.bmp
name =
Img3.bmp
name =
Img4.bmp
2 / 11
Codici Matlab
Scritto da ventus85
Martedì 24 Giugno 2008 23:22
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;
end
end
phi=phi
3 / 11
Codici Matlab
Scritto da ventus85
Martedì 24 Giugno 2008 23:22
torna su
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). Tenendo 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;
end
end
display ('il massimo comun divisore è :')
MCD=a
torna su
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
Codici Matlab
Scritto da ventus85
Martedì 24 Giugno 2008 23:22
x = 1 : 0.1 : 2 ;
A = [ x ;exp(x) ];
fileprova = fopen ( 'C:Matlab7workAIVProveprova2.txt', 'wt');
fprintf ( fileprova,'%6.2g %8.4gn' , A);
fclose (fileprova);
torna su
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');
end
torna su
Concatenazione di matrici
Basta creare la prima matrice e concatenarla nella seconda aggiungendo le colonne necessarie
per fare una nuova matrice.
Esempio molto chiaro:
5 / 11
Codici Matlab
Scritto da ventus85
Martedì 24 Giugno 2008 23:22
A=[1 2 3; 4 5 6]
B=[A; 9 9 9]
Viene
B=
1 2 3
4 5 6
9 9 9 torna su
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');
torna su
Creare una tabella (con il comando uitable)
Basta fare questi due passi:
6 / 11
Codici Matlab
Scritto da ventus85
Martedì 24 Giugno 2008 23:22
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'});
torna su
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
Codici Matlab
Scritto da ventus85
Martedì 24 Giugno 2008 23:22
torna su
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;
end
distEucl(i,j)=sqrt(quaddiff);
end
end
distEucl=distEucl
torna su
Per aggiungere un check box ad una figura
8 / 11
Codici Matlab
Scritto da ventus85
Martedì 24 Giugno 2008 23:22
f= figure();
h = uicontrol('Style', 'checkbox','String', 'Selezionami',...
'Position', [430 250 100 20]);
torna su
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')
torna su
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
Codici Matlab
Scritto da ventus85
Martedì 24 Giugno 2008 23:22
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
Codici Matlab
Scritto da ventus85
Martedì 24 Giugno 2008 23:22
Questo/a opera è pubblicato sotto una Licenza Creative Commons .
11 / 11