Sei sulla pagina 1di 14

Laboratorio ingegneria biomedica

-2 moduli
materiale su Iol
registrarsi su IOL
Modalità di verifica: ESAME
Prova scritta/pratica da svolgere in laboratorio MATLAB (1
MODULO) scrivere 2 programmi matlab e salvarli.
3-4 date tra giugno e luglio
limite posti iscrizione
MODULO 1
Utilizzi di MATLAB
Conoscenze medico/fisiologico attraverso modelli matematici
MODELLO MATEMATICO
Traduzione in linguaggio matematico di una funzione,
un’evidenza sperimentale, nel caso più generale questa
traduzione cerca di descrivere anche l’evoluzione temporale dei
sistemi biologici e fisiologici di interesse. I modelli matematici si
traducono in sistemi di equazioni differenziali. Equazioni
differenziali del 1° ordine principalmente, poi qualche accenno al
2°.
Questa formalizzazione deve trovare un riscontro attraverso
un’osservazione. (richiamo Galileo Galilei). Misure sperimentali.
Entrano in gioco aspetti sperimentali, fare delle misure e sulla
base di queste poter confermare se le ipotesi che abbiamo fatto
quindi il modello formulato è accettabile o meno,
Caratterizzazione Ingresso/uscita
Se ho un ingresso di tipo sinusoidale mi aspetto un’uscita
sinusoidale. Il sistema può amplificare o attenuare o mantenere
invariata l’ampiezza della sinusoide d’ingresso e può
sfasare(ritardare o anticipare l’uscita rispetto all’ingresso). Ciò si
può verificare sperimentalmente.
L’osservazione sperimentale è il presupposto per procedere
all’identificazione del modello.
Parametri del modello: a priori non sono noti.
Evoluzione e comportamento del sistema in situazioni nelle quali
è difficile fare esperimenti.
Questo approccio trova riscontro nella progettazione di
dispositivi. Questo tipo di approccio si chiama Insilicon Medicine
Fare un modello è un esercizio di traduzione. Si analizza il sistema
biologico di interesse. il modello è una traduzione della realtà
complessa in un sistema più o meno semplice che sia gestibile
matematicamente. La complessità e il livello di dettaglio
dipenderà dalle finalità che ho in mente. Non esiste solo una
possibile traduzione. La modellazione è un esercizio libero e
creativo in cui questa traduzione si può personalizzare. Un
aspetto che condiziona questa traduzione è la motivazione che
spinge a descrivere quel modello.
Casi di studio (esempi):
 Cinetica di una sostanza nel plasma;
 Farmacocinetica;
 Cinetica del glucosio;
 Sistema cardiocircolatorio;
 Funzione renale;
LE BASI DI MATLAB
MATRIX LABORATORY
È uno strumento computazionale deputato a rendere possibile le
operazioni tra matrici. È stato creato negli anni ’70 e nasce con
finalità didattiche per risolvere problemi di algebra lineare senza
conoscenze di programmazione Fortran. Da fortran si passò a C.
Matlab tratta tutte le variabili come casi particolari di matrici:
 Uno scalare è un caso particolare di matrice 1*1;
 Un vettore è una matrice 1*N (vettore riga) o N*1 (vettore
colonna).
Matlab è un linguaggio di programmazione che consente di
realizzare applicazioni scientifiche di varia natura; Matlab
contiene una libreria vasta di funzioni predefinite.
Matlab Attaway libro (si può scaricare)
Per costruire una variabile in matlab bisogna darle un nome.
Matlab è case sensitive
L’istruzione ones crea un vettore o una matrice di 1
Es. vector= ones(1,5)
Dove 1 indica il numero di righe, 5 numero di colonne
L’istruzione magic crea dei numeri casuali.
Il % introduce un commento, è un appunto, una nota del
programmatore.
Con il ; si evita l’eco, la visualizzazione sulla command window.
Per conoscere le dimensioni delle variabili si può utilizzare il
comando whos, che elenca tutte le variabili definite
dall’utente specificando per ognuna dimensione, occupazione
in memoria e tipo di dato.
Cartella corrente current folder ci da un accesso diretto a
questa cartella. È l’area in cui sono elencati i file contenuti nella
cartella di lavoro(script, funzioni, file dati,figure)
Command history è un buffer che ci fa vedere tutti i comandi
che abbiamo fatto. Mostra l’elenco in ordine cronologico dei
comandi che sono stati digitati nella Command Window.
Questi comandi possono essere riutilizzati con un doppio click
del mouse.
I comandi precedentemente digitati possono essere richiamati
anche posizionando il cursore nella command window con le
frecce su/giù.
Per definire una nuova variabile si utilizza la sintassi:
nomeVariabile = valore oppure nomeVariabile=espressione
Il nome della variabile deve essere costituito da lettere numeri
e dal carattere ‘_’. Ma il primo simbolo deve essere
necessariamente una lettera. Si deve evitare di dare nomi di
variabili preesistenti. Es di ones.
Operazioni sugli scalari
 Somma, sottrazione, moltiplicazione e divisione si
realizzano con gli operatori +,-,*,/:
l’elevamento a potenza si realizza con ^, tuttavia per la base
10 oltre alla notazione classica 10^X si può usare la
notazione compatta 1eX;
se la base è il numero di Eulero si deve utilizzare la funzione
exp(X) dove l’argomento X della funzione è l’esponente
quando non ha un nome una variabile di Matlab si chiama
ans. È una variabile temporanea.
Arrotondamento di un numero
La struttura di base di matlab è la matrice
Un primo modo per definire una matrice consiste nell’elencare
gli elementi uno per uno tra parentesi quadre, separando le
diverse righe con il punto e virgola:
matrix =[1 2 3; 4 5 6; 7 8 9]
funzioni predefinite (zeros, ones, rand, randn, eye, diag)
tutte queste funzioni ad eccezione di diag, richedono in
ingresso le dimensioni della matrice, ossia:
- Il nunero di righe e il numero di colonne se la matrice è
rettangolare

Fino a concatenazione matrici.

5/03/2019
matrici in matlab
esempi: zeros, ones
rand estrae numeri casuali da una distribuzione
randn estrae numeri da distribuzione gaussiana
diag: mi consente di avere solo gli elementi della diagonale
diversi da zero.
Diag ([ 1 1)]
Matrice con uni sulla diagonale
Eye: crea tutti 1 sulla diagonale e zero al di fuori
Per concatenare due matrici devono avere lo stesso numero di
righe
Stesso numero di colonne per concatenare una sopra l’altra.
Funzione Cat per concatenare matrici
concat=cat(2, nome matrici separate da , )
size (nome matrice)
N=numl (nome matrice)
Per estrarre : p= matrix (1,3)
P= matrix (1:end,3) estraggo la 3 colonna

p= matrix (1:2,2:3)

p=

2 3
5 6

somma matrici: somma = nome matrici separate da ,

quando abbiamo due matrici di qualsiasi dimensione si può fare il


prodotto elemento per elemento usando .*

per fare il quadrato di una matrice: quad=matrix.^2


quad =

1 4 9
16 25 36
49 64 81

il quandrato senza il punto implementa il prodotto della matrice


per se stessa
quad= matrix^2

quad =

30 36 42
66 81 96
102 126 150

sin (matrice) : si ottiene il seno di tutti gli elementi della matrice.


per creare una trasposizione es concat = concat ‘
concat = concat'

concat =

1 4 7
2 5 8
3 6 9
1 2 3

matrice invertibile: la matrice deve essere quadrata altrimenti


non è invertibile:

Per invertire l’ordine delle righe o delle colonne di una matrice si


usano rispettivamente i comandi flipud (up-down) e fliplr (left-

right)

N= mean (mean(matrix)) fa la media di tutte le colonne

>> N= mean (matrix, 'all')

N=

5
somma = sum(matrix)

somma =

12 15 18

stringa= 'ciao' ( si scrive tra gli apici)

m=10

m=

10

>> stringa= (['la variabile vale m=' num2str(m)])

stringa =

'la variabile vale m=10'


Funzione find
Estrarre gli indici in cui il vettore è non nullo
Si può fare anche sulle matrici (anche se si usa meno)

Test= nome matrice >0

Input: (‘inserisci un numero:’)


stringa1=strcat(['ciao', 'ciao', 'ciao'])

stringa1 =

'ciaociaociao'

- Vettori:
t= 1:100;
t=1:2:100 ( il vettore ha 50 elementi perche ha passo 2)
Per contare all’indietro si usa:
t= 100: -1:1
t=1:.5:100 (anche nel caso decimale)

t=linspace (1,100,30) (si mette estremo inferiore, estremo


superiore e numero di passi per arrivarci)
t= logspace (1,100,30)

Per salvare dei dati e non delle istruzioni, non script di codice ma
file di dati:
esempio :
save dati, salva un file dal nome dati.mat
load invece si usa per caricare le variabili che ho salvato
il formato in cui si può salvare può essere.mat ma anche ascii.
12/03/19

Si possono esportare le variabili numeriche in file di testo.


Doc format : permette di vedere informazioni in maniera
dettagliata
Lookfor si usa nel caso non ricordiamo l’espressione di alcune
funzioni
Es. lookfor logarithm
Funzioni
È uno script che comincia con la parola function, dopo la parola
chiave compaiono un elenco di possibili variabili di uscita tra [],
poi c’è l’=; poi untitled che deve coincidere con il nome in cui
salviamo lo script; poi ci sono i parametri di entrata che
consentono di calcolare quelli di uscita. La function finisce
sempre con la parola chiave end.
Per superare il problema dei workspace distinti si una la parola
chiave “global” seguita dal nome della variabile
Costrutti di scelta
IF : condizione dove la condizione è un’espressione logica che
contiene operatori operazionali o logici (true o false) se è true
eseguo le istruzioni, se è false salto all’istruzione successiva
Set di istruzioni
End
Es: n>0 se per esempio n vale 5 è true e quindi l’istruzione è
eseguita
Operatori relazionali

If
Istr 1
Else
Istr2
End
Costrutti SWITCH, CASE, OTHERWISE
Cicli for e while
For : ripete l’esecuzione del blocco per un numero specificato di
volte
While: ripete l’esecuzione del blocco finchè è soddisfatta una
determinata condizione
While: condizione true, false
Istruzioni
End
Non posso stabilire a priori per quanto una istruzione rimarrà
true.

26/03/19
Esperimenti di calibrazione: servono per capire come uno
specifico strumento funziona, retta di calibrazione.
In ingresso ho una temperatura nota e in uscita ho una
resistenza.
questi sensori misurano la variazione di temperatura

plot(T,R,'*m')
xlabel('T[K]'),ylabel('R [Ohm]')
p=polyfit(T,R,3)
hold on
modello=p(1)*T.^3+p(2)*T.^2+p(3)*T+p(4);

y=f(x,)
La scelta del modello si può usare per schematizzare
ulteriormente il problema. Un modello è una rappresentazione
semplificata della realtà.

Metodo dei minimi quadrati

Una volta individuato il modello y=f(x,) che si intende


utilizzare bisogna individuare i valori dei parametri theta che

forniscono la migliore interpolazione possibile dei dati

sperimentali. Il metodo cerca il numero di quadrati che

minimizzano la funzione.

A seconda delle caratteristiche di f lo schema si implementa in


modi diversi. Ho 3 casi possibili.

f(x,)- lineare nei parametri


 non lineare nei parametri
(ma linearizzabile)
 non lineare nei parametri
(non linearizzabile)
Un sistema è lineare quando è caratterizzato da additività e
scalabilità. Sono lineari nei parametri le funzioni polinomiali
Un esempio di funzione lineare nei parametri è y=a/x + b

Modello non lineare nei parametri:


y=a/b *x +c^2 perché ho un rapporto tra parametri e una potenza
di ordine 2
altro esempio: y=sin(a)*x +b/c *cos(x)
altro esempio: y=c*e^-kx ma è linearizzabile perché se
applichiamo una trasformazione logaritmica ad ambo i membri
ho ln(y)=ln(c0)+k*x=c0’ + k*x

 Caso lineare (da slide 36 a 50)


Un modello y=f(x, ) si dice lineare nei parametri se, dato un
generico ingresso x:
1. La risposta del modello i cui parametri valgono 1 + 2 è
uguale alla somma delle risposte dei modelli aventi
parametri che valgono rispettivam 1 e 2
2. La risposta all’ingresso x del modello i cui parametri valgono
alfa * 1 è= ad alfa volte la risposta del modello i cui
parametri valgono 1
-Determinazione analitica del vettore dei parametri tetha ^ nel
caso in cui il modello sia un polinomio di grado p.
spiegazione con vettori e matrici  vedi slide fino a matrice
pseudoinversa
Polyfit si può usare solo se il modello è di tipo polinomiale. Se
non lo è bisogna passare per il calcolo della matrice
pseudoinversa.
La funzione richiede in ingresso il vettore X degli ingressi applicati
al sistema, il vettore Ys dei risultati sperimentali e il grado p del
polinomio interpolante;
restituisce in uscita un vettore contenente i valori da assegnare ai
p+1 parametri del polinomio. I valori sono disposti in ordine
decrescente delle potenze di x

Slide 61  modelli non lineari nei parametri ma linearizzabili


Alcuni modelli non lineari nei parametri possono essere
linearizzati mediante un cambio di variabile;
I parametri del modello linearizzato si possono determinare
usando:

es. Modello di tipo esponenziale decrescente. Si può descrivere


con un’equazione differenziale di primo ordine. Questo modello è
non lineare nei parametri perché k compare nella funzione
esponenziale.
Esempio: cinetica di una sostanza
Sostanza immessa nel plasma, viene fissata o semplicemente
eliminata dal circolo ad un ritmo proporzionale alla sua
concentrazione plasmatica.

Modelli non lineari nei parametri


(Fino a slide 79)
Se il modello non è linearizzabile non si può definire la matrice B,
quindi non si può applicare la formula analitica usata per il caso
lineare.
Si può usare l’identificazione parametrica con il metodo dei
minimi quadrati usando la funzione di Matlab fminsearch.
Questa permette di individuare il minimo locale di una funzione
di più variabili, quindi si può usare per determinare il vettore
tethe che minimizza la funzione costo: