[MATLAB] Régression linéaire et accès aux données

a marqué ce sujet comme résolu.

Bonjour à tous,

Je suis un novice en MATLAB mais voilà que je dois travailler sur des données que j’ai récolté dans une expérience de bio-réacteur. J’ai un set de données de facteur de dilution $D$ [1/h], concentration de cellules [mg/L] et concentration de substrat $S$ [mg/L]. Pour les curieux, j’étudie simplement la croissance d’une levure.

Une des première chose important que j’aimerais calculer c’est ce qu’on appelle la vitesse maximale de croissance $\mu _{\max}$ et la constante de saturation $K_s$ en assumant une cinétique de Monod.

Ceci peut mathématiquement se faire à partir d’une régression linéaire de $D^{-1}$ en fonction de $S^{-1}$ (que j’ai dans mes données). Mon intersection avec l’axe $Ox$ me donnera $\frac{1}{{{\mu _{\max }}}}$ et ma pente est $\frac{{{K_s}}}{{{\mu _{\max }}}}$.

Comment puis-je faire ça facilement dans MATLAB ? (En sachant que l’idéal c’est de pouvoir stocker ça dans des variables car je m’en sert pour d’autres calculs après).

J’ai tenté ceci:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
clearvars 
load data_yeastCulture

% mu_max & K_s

Sinv = 1./S;
Dinv = 1./D;
[f1, gof] = fit(Sinv, Dinv, 'poly1')
r2 = gof.adjrsquare;
plot(f1, Sinv, Dinv);
legend('Experimental data set', 'Lineweaver-Burke plot - Data fitting')
xlabel('Inverse substrate (S) concentration / [L/mg]','FontSize',12,'FontWeight','bold')
ylabel('Inverse dilution ratio (D) / [h]','FontSize',12,'FontWeight','bold')

J’ai fais un simple fitting sauf que je sais pas comment stocker $\mu_ {\max}$ et $K_s$ dans des variables pour la suite de mes calculs. Ici, j’ai accès aux données car j’ai l’équations de la droite (via un clic dans l’outil de régression de Matlab mais pas dans le code…) mais du tout je dois calculer à la main $\mu_ {\max}$ et $K_s$ ce qui n’est pas pratique du tout.

Avez-vous des idées?

Merci d’avance!

+0 -0

Salut,

J’ai regardé la doc pour toi, et j’avoue que sans avoir avoir l’habitude de Matlab et de sa documentation, c’est probablement une tâche difficile.

Il se trouve que fit renvoie comme premier résultat (f1 dans ton cas) un objet cfit. Tu peux récupérer les valeurs des coefficients en utilisant la fonction coeffvalues comme dans la deuxième partie de l’exemple de la documentation.

Une fois que tu as ça, tu vas sûrement te demander à quel coefficient correspond quelle valeur. C’est avec la fonction coeffnames que tu pourras trouver. L’exemple de la doc devrait se suffire à lui-même.

Et maintenant, tu te demandes certainement quel rôle joue chaque coefficient, parce que le nom n’est pas forcément très parlant. Tu vas trouver ton bonheur dans le tableau Polynomial Model Names and Equations, à la ligne qui va bien, c’est-à-dire poly1.

Avec ça, tu tiendras le bon bout pour résoudre ton problème. Si tu as des difficultés, je pourrais encore rendre service dans la mesure de mes capacités. ;-)


Je digresse, mais si ton besoin le permet (je ne connais rien à ton problème), il peut être plus simple pour toi d’utiliser une fonctionnalité plus basique de Matlab, à savoir polyfit pour ajuster des polynômes et polyval pour les évaluer.

En faisant ça, tu perdras cependant la possibilité d’ajuster des modèles plus complexes (voir arbitraire si je comprends la doc de la Curve Fitting Toolbox), et tu devras récupérer les données de gof autrement.


Édit. : Je me suis permis d’ajouter le tag matlab sur ton sujet avec mes super-pouvoirs. Ça peut aider à trier dans le futur. :)

+1 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte