How can i define a parameter with if condition?

I want to define variables with if and switch conditions in simbiology. Is it possible to define using matlab code?
For example I have variable say
x = normrnd(140,104)
if x>440
y = 440;
elseif x<40
y = 40;
else
x=y;
end

 Accepted Answer

You have to initialize y
y=0 %for example
%or maybe in the last else you wanted
y=x
then
x = normrnd(140,104)
y=x
if x>440
y = 440;
elseif x<40
y = 40;
end
%or without a for loop
x = normrnd(140,104)
y=40*(x<40)+440*(x>440)+x*(40<=x & x<=440)

More Answers (1)

Hi,
The short answer is that SimBiology cannot directly use "if" or "switch", but you can use them indirectly by putting them in a helper function. For example, to use the sample code you provided, create a file named "myrand.m" with the following content:
function y = myrand
x = normrnd(140,104)
if x>440
y = 440;
elseif x<40
y = 40;
else
y = x; % I assume "x=y" was a typo
end
Then, to use this function to set the initial value of a species named "z" in a model stored in variable "m1", use the following command:
m1.addrule('z = myrand()', 'initialAssignment');
Further, as Azzi points out above, this particular example can be written without if or switch statements. Here's how I'd write the rule so that I didn't have to create a separate helper function:
m1.addrule('z = max(min(normrnd(140, 104), 440), 40)', 'initialAssignment');

1 Comment

Thanks for the answers. These help me a lot for the PBPK modelling.

Sign in to comment.

Products

Tags

Community Treasure Hunt

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

Start Hunting!