Farmacocinetica con Matlab

Area di discussione libera.

Moderatore: Staff

Regole del forum
1) Rispettare le idee altrui.
2) Evitare le offese dirette.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
Litie
Linux 2.x
Linux 2.x
Messaggi: 291
Iscritto il: sab 26 nov 2005, 11:30
Località: Pavia
Contatta:

Farmacocinetica con Matlab

Messaggio da Litie »

Ho un problema per un'esame.

Si tratta di un problema di farmacocinetica,dosi ripetute in un modello monocompartimentale.....

I parametri farmacocinetici sono questi

V(Volume di distribuzione) = 5litri
Dose=500mg
K01=1.2 ore-1

Rappresento il sistema nello spazio degli stati

dq/dt=-K01q(t) +u(t),
y(t)=q(t)/V;
q(0)=0;


in pratica u(t) deve essere un segnale periodico impulsivo.Le somministrazioni avvengono ad intervalli regolari TAU.

Come genero questo segnale con Matlab?

Ho provato così

A=[-K01];B=[500];C=[1/V];D=[0];
sys=(A,B,C,D);
[u,t]=gensig('pulse',6,72,0.01);
[y,t]=lsim(sys,u,t);

dove, 6=TAU è l'interrvallo tra dosi,72 è la durata della cura e 0.01(ipotizzato da me) è il passo di quatizzazione.
Dovrebbe essere corretto ma col fischio che funziona,y(t) non è sballata.....la concentrazione media nel plasma nel caso di dosi ripetute la si calcola così:

Yss=DOSE/K01*TAU*V


magari sbaglio ad utilizzare la lsim....se guardo u(t) generato con gensig mi sembra OK ,cioè ho un impulso ad intervallo regolari....però poi y(t) calcolata con lsim è sballata.....

help

PS:in pratica si tratta di plottare su video y(t) in funzione di un ingresso impulsivo periodico....

dq/dt=-K01q(t) +u(t),
y(t)=q(t)/V;
q(0)=0;

con u(t) appunto impulso periodico

Avatar utente
absinthe
Iper Master
Iper Master
Messaggi: 2354
Iscritto il: dom 15 mag 2005, 0:00
Nome Cognome: Matteo Nunziati
Slackware: 12.1 - defunct
Kernel: 2.6.32-5-amd64
Desktop: gnome
Distribuzione: debian squeeze
Località: Prato
Contatta:

Messaggio da absinthe »

per prima cosa... quel sys=(A,B,C,D) è un errore di battitura?

perchè dovrebbe essere :

sys=ss(A,B,C,D);

comunque dovrebbe esistere una fonzione per analizzare la risposta impulsiva di un sistema direttamente senza dovresi creare l'impulso... se ricordo bene...

M

Avatar utente
Litie
Linux 2.x
Linux 2.x
Messaggi: 291
Iscritto il: sab 26 nov 2005, 11:30
Località: Pavia
Contatta:

Messaggio da Litie »

si è un errore di battitura

sys=ss(A,B,C,D)

esiste la funzione impulse ed initial , ma io ho bisogno di forzare l'ingresso in modo tale che sia un impulso periodico al fine di simulare la somministrazione ripetuta di un farmaco...

Avatar utente
absinthe
Iper Master
Iper Master
Messaggi: 2354
Iscritto il: dom 15 mag 2005, 0:00
Nome Cognome: Matteo Nunziati
Slackware: 12.1 - defunct
Kernel: 2.6.32-5-amd64
Desktop: gnome
Distribuzione: debian squeeze
Località: Prato
Contatta:

Messaggio da absinthe »

Litie ha scritto:si è un errore di battitura

sys=ss(A,B,C,D)

esiste la funzione impulse ed initial , ma io ho bisogno di forzare l'ingresso in modo tale che sia un impulso periodico al fine di simulare la somministrazione ripetuta di un farmaco...
ascolta non ho il modulo per la simulazione al momento... però leggendo le impostazioni sembra tutto giusto... potesti mandarmi due srceenshots del modello.. perchè dici che non funziona?

se vuoi ti posto l'email in MP (ammarte che è in chiaro nello slack-desk di tracepkg :D)

------------------------------edit

ok ho messo il control system toolbox ed ho fatto girare il modellino... a occhio la risposta mi sembra quella giusta: inserisci un impilso ed il sistema risponde con un impulso che decade nel tempo asistoticamente sino a 0 finchè non inserisci un altro impulso... per quello ti dicevo di provare ad usare il built in per risposte impulsive: perchè un impulso periodico non è altro che la riporduzione poer N volte di una risposta impulsiva (almneno che gli impulsi non siano molto ravvicinati... in quel caso non saprei...)

ecco il link ai miei plot:
Immagine
quella in blu è l'ingresso, quella in rosso l'uscita!

M

Avatar utente
Litie
Linux 2.x
Linux 2.x
Messaggi: 291
Iscritto il: sab 26 nov 2005, 11:30
Località: Pavia
Contatta:

Messaggio da Litie »

Risolto....l'inghippo sta nel fatto che la funzione
[u,t]=gensig('pulse',TAU,72,0.01);
genera si un segnale impulsivo periodico con periodo TAU ma a causa della quantizzazione(0.01) il segnale impulsivo integrato da -inf a +inf non è =1.
Mi bastava moltiplicare l'uscita u(t) per 100 (1/0.01) per far tornare i conti,infatti l'esponenziale dovrebbe oscillare intorno ad un valore medio diverso da zero che rappresenterebbe il livello di farmaco ideale nel plasma

Grazie Absinthe per l'aiuto....

Rispondi