フィルターのクリア

Biological Effective Dose (BED)

5 ビュー (過去 30 日間)
Valentina Vasic
Valentina Vasic 2023 年 2 月 20 日
コメント済み: Valentina Vasic 2023 年 2 月 21 日
Hello, everyone,
Does anyone know how to implement the biological effective dose (BED) calculation? The calculation contains a double integral which I do not know how to calculate.
(#) are number and (v) are vectors.
I am trying to use the cumtrapz.
%% BED
AlphaBeta = 2.6;
nu = 0.3571;
t_w = [0:time_h(end)/length(time_h):time_h(end)]; %??
t_w = t_w';
t_w(end) =[];
Int1 = TAC.*exp(-nu.*(t_w-time_h));
Int2 = TAC.*S.*cumtrapz(time_h,Int1);
G = 2./(max(Dose_Gy3)).^2.*cumtrapz(time_h,Int2);
BED = max(Dose_Gy3).*(1+max(G)./AlphaBeta.*max(Dose_Gy3));
The first internal integral must be made from 0 to t, where t is the time vector. I do not know how to interpret the first integral (dw).
Best regards,
Valentina

採用された回答

Torsten
Torsten 2023 年 2 月 20 日
編集済み: Torsten 2023 年 2 月 20 日
Assuming you have two arrays (time_h and TAC) of the same length:
AlphaBeta = 2.6;
mu = 0.3571;
S = 1;
int_inner = cumtrapz(time_h,TAC.*exp(mu*time_h));
int_outer = trapz(time_h,TAC.*exp(-mu*time_h).*int_inner);
G = 2./AUC^2*int_outer;
BED = S*AUC.*(1+G./AlphaBeta.*S*AUC);
For example:
format long
mu = 0.3571;;
Ddot = @(t)t.^2;
fun = @(t,omega)Ddot(t).*Ddot(omega).*exp(-mu*(t-omega));
value = integral2(fun,0,1,0,@(t)t)
value =
0.051556597835785
time_h = 0:0.01:1;
TAC = Ddot(time_h);
int_inner = cumtrapz(time_h,TAC.*exp(mu*time_h));
int_outer = trapz(time_h,TAC.*exp(-mu*time_h).*int_inner)
int_outer =
0.051573876925114
  1 件のコメント
Valentina Vasic
Valentina Vasic 2023 年 2 月 21 日
Dear Torsten,
Perfect, thank you very much.
Exactly what I was looking for. I didn't have in mind splitting the two exponentials. Great idea.

サインインしてコメントする。

その他の回答 (1 件)

Matthieu
Matthieu 2023 年 2 月 20 日
if you have the symbolic formula for TAC :
%Define AUC, S, mu, alpha, beta, T beforehand
syms TAC(t) % Define TAC as symbolic function of t
TAC(t) = t^2 ; % Formula for TAC here
dD_dt(t) = TAC(t)*S ;
D = AUC*S ;
syms t w
int1 = int(dD_dt(w)*exp(-mu*(t-w)),w,0,t) ;
int2 = int(dD_dt(t)*int1,t,0,T) ;
G = (2/D^2)*int2 ;
BED = D*(1+G*D*beta/alpha) ;
use vpa(BED) to get an explicit value for BED.
  1 件のコメント
Valentina Vasic
Valentina Vasic 2023 年 2 月 21 日
Dear Matthieu,
unfortunately I was not looking for this kind of solution. I have vectors and not defined functions.
But I thank you.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeSatellite Mission Analysis についてさらに検索

製品


リリース

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by