Share
Explore BrainMass

MATLAB polyfit find P50 in mmHg

How do I convert back to find P50 in mmHg and n given the best-fit?

function po2()
%This function tests the linearty of tetrameric bovine hemoglobin binding
%to oxygen as a possible blood substitute for monomeric hemoglobin. An
%oxygen dissociation curve is created, and a linear regression is performed
%on the experimental data using the built in Matlab function, polyfit. A
%best-fit model is plotted with the data to show that linearty exists.

% this is the data provided
pO2 = [ 10 20 30 40 50 60 70 80 90 100 110 120 ] ;
Y = [0.18 0.4 0.65 0.8 0.87 0.92 0.94 0.95 0.95 0.96 0.96 0.97 ] ;

% Test the linearity according to Henry's Law and the Hill equation
%ln(Y/(1-Y)) = n*ln(pO2)+n*ln(P50) which captures the sigmoidal shape of
%the oxygen dissociation curve

x = log(pO2) ;
yy = log( Y ./(1-Y) ) ;

p = polyfit( x, yy, 1) ;

fitted = p(1) * x + p(2) ; %define equation for best-fit line

subplot(1,2,1) ;
hold ;
plot(pO2, Y, 'o', 'LineWidth',2) ;
hold ;
legend('Oxygen Dissociation Curve') ;
xlabel('pO2 in mmHg', 'FontSize', 12, 'FontWeight', 'bold') ;
ylabel('Fraction of Hb Saturation in %', 'FontSize', 12, 'FontWeight', 'bold') ;

subplot(1,2,2) ;
hold ;
plot( x, yy, 'o', 'LineWidth', 2) ; % here plot the provided data
plot( x, fitted, ':', 'LineWidth', 2) ; % here plot the linear fit
xlabel('log(pO2) in mmHg', 'FontSize',12, 'FontWeight','bold') ;
ylabel('log(Y /(1-Y))in % Saturation', 'FontSize',12, 'FontWeight','bold') ;
legend('Linear Regression of Oxygen Dissociation Curve', 'Fitted line', 2) ;
hold ;

Solution Preview

We have the following relations:

ln(Y/(1-Y)) = n*ln(pO2)+n*ln(P50) ---[1]---

was given as the definition of what we want to fit, when we took ...

$2.19