How to randomly sample output times in Simbiology?
2 ビュー (過去 30 日間)
古いコメントを表示
In the Simbiology Model Analyzer, 1) how to specify output time point of each run of the model as a random number from a normal distribution? E.g. a random number from a mean of 15min and SD 2min. 2) How to incorporate the output time as one input variable in global sensitivity analysis (Sobol index)? Thank you very much!
0 件のコメント
回答 (2 件)
Sulaymon Eshkabilov
2024 年 2 月 10 日
To randomly generate values using MEAN and STD values, normrnd() fcn can be used:
MEAN_val = 15; % Mean in minutes
STD_dev = 2; % Standard deviation in minutes
Random_Number = normrnd(MEAN_val, STD_dev, 10, 1);
fprintf('Random number generated: %f \n', Random_Number);
0 件のコメント
Jeremy Huard
2024 年 2 月 15 日
編集済み: Jeremy Huard
2024 年 2 月 15 日
Since your ultimate goal is to run a GSA on the model output, I would recommend the following:
- Create parameter outTimeScalar in your model with the relevant unit
- Create a parameter that converts the simulation time (which can be different for every simulation program) into the same unit as the parameter outTimeScalar. This can be achieved with a repeated assignment: timeInUnitOfInterest = time
- Create an observable that will call an external function that you will implement in the next step, for example: out = getOutput(timeInUnitOfInterest, speciesOfinterest, outTimeScalar)
- Create the external function that gives you the output at this specific time:
function out = getOutput(time, speciesOfinterest, outTime)
if all(time==0)
out = speciesOfinterest(end);
else
[time,idx] = unique(time,'last');
speciesOfinterest = speciesOfinterest(idx);
outTime = outTime(1);
out = interp1(time, speciesOfinterest, outTime,'pchip');
end
end
Please note that for this to provide meaningful results, you will need to make sure that timeInUnitOfInterest(1) < outTimeScalar < timeInUnitOfInterest(end).
Now, you can use Sobol GSA or MPGSA with outTimeScalar as an input that is sampled from a normal distribution.
I hope this helps.
Best regards,
Jérémy
Edit: Corrected function.
0 件のコメント
コミュニティ
その他の回答 SimBiology コミュニティ
参考
カテゴリ
Help Center および File Exchange で Extend Modeling Environment についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!