Я пытаюсь реализовать в Matlab алгоритм, который вычисляет концентрацию витамина D в крови на основе некоторых формул из статьи. Основная формула:
, где:
- T - день года, для которого измеряется концентрация;
- А является постоянным для простейшего измерения, описанного в журнале
- E (пребывание на солнце в определенный месяц в году) приведено в статье
- R (концентрация витамина D после однократного воздействия солнечного света) может быть рассчитана по формуле
где F, альфа, бета - константы, t - день.
Автор статьи писал, что после расчета концентрации по формуле C (t) он прибавлял постоянное значение 33 каждый день.
Формула для R (t) проста, и моя диаграмма такая же, как в статье, но у меня проблема с формулой для вычисления C (t).
Это мой код:
function [C] = calculateConcentration(A,E,T,R)
C=zeros(1,T);
C(1) = E(1)*A*R(1);
month=1;
for i=2:(T)
for j=1:i
if mod(j,30)==0 && month<12
month=month+1;
end
C(i) = C(i)+E(month)*A*R(T-j+1);
end
month=1;
end
for i=1:T
C(i)=C(i)+33;
end
end
Вот мой график:
Вот график из статьи:
Итак, у меня две проблемы с этим графиком. Во-первых, самые большие значения на моем графике меньше значений на графике из статьи, а во-вторых, мой график постоянно растет.
Большое спасибо заранее помогите.
[РЕДАКТИРОВАТЬ] Я присоединяю значения всех констант и функцию для вычисления R (t).
function [R]= calculateR(T)
R = zeros(1,T);
F = 13;
alpha = 30;
beta = 3;
for i=1:T
R(i)=F*(2.^(-i/alpha)-2.^(-i/beta));
end
end
A=0.1;
T=365;
R = calculateR(T);
E = [0.03, 0.06, 0.16, 0.25, 0.36, 0.96, 0.87, 0.89, 0.58, 0.24, 0.08, 0.02];
plot(1:T,R)
C = calculateConcentration(A,E,T,R);
figure; plot(1:T,C);