How can i define a parameter with if condition?

4 visualizzazioni (ultimi 30 giorni)
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

Risposta accettata

Azzi Abdelmalek
Azzi Abdelmalek il 4 Feb 2013
Modificato: Azzi Abdelmalek il 4 Feb 2013
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)

Più risposte (1)

Arthur Goldsipe
Arthur Goldsipe il 4 Feb 2013
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 Commento
Rajith
Rajith il 15 Feb 2013
Thanks for the answers. These help me a lot for the PBPK modelling.

Accedi per commentare.

Community

Più risposte nel  SimBiology Community

Categorie

Scopri di più su Extend Modeling Environment in Help Center e File Exchange

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by