# A bit more about variables >> var1 = [ 1 2 3] var1 = 1 2 3 >> var2 = var1 var2 = 1 2 3 >> var1 = [4 5 6] var1 = 4 5 6 >> var2 var2 = 1 2 3.

## Presentation on theme: "A bit more about variables >> var1 = [ 1 2 3] var1 = 1 2 3 >> var2 = var1 var2 = 1 2 3 >> var1 = [4 5 6] var1 = 4 5 6 >> var2 var2 = 1 2 3."— Presentation transcript:

A bit more about variables >> var1 = [ 1 2 3] var1 = 1 2 3 >> var2 = var1 var2 = 1 2 3 >> var1 = [4 5 6] var1 = 4 5 6 >> var2 var2 = 1 2 3

>> var3 = 'Mostly Harmless' var3 = Mostly Harmless >> var3(2:9) ans = ostly Ha Strings – vectors of characters

Control Structures Sequence Repetition Selection

Sequence Pop1=23 birthRate=0.2 deathRate=0.1 birth=Pop1 * birthRate death=Pop1 * deathRate change=birth - death Pop2=Pop1 + change (The commands are executed one after the other)

Repetitions

Reminder function pop = popDynam(popSize1, birthRate, deathRate) birth = popSize1 * birthRate; death = popSize1 * deathRate; change = birth - death; popSize2 = popSize1 + change; pop = [popSize2 birth death]; end Please note the indentation.

>> popDynam(23,0.2,0.1) ans = 25.3000 4.6000 2.3000 >>

popDynam([23 0.2 0.1]) An Alternative approach is to encapsulate the three parameters in a single element – a vector.

function pop=popDynam(popParam) popSize1 = popParam(1); birthRate = popParam(2); deathRate = popParam(3); birth = popSize1 * birthRate; death = popSize1 * deathRate; change = birth - death; popSize2 = popSize1 + change; pop = [popSize2 birth death]; end

>> popDynam([23 0.2 0.1]) ans = 25.3000 4.6000 2.3000 >>

The vector [23 0.2 0.1] represents the parameters of a population. How would we represent the parameters of three populations?

popParam = [23 0.2 0.1; 38 0.25 0.05; 17 0.5 0.4] popParam = 23.0000 0.2000 0.1000 38.0000 0.2500 0.0500 17.0000 0.5000 0.4000 >> popParam(:,1 ) population size popParam(:,2) birth rate popParam(:,3) death rate

function pop=popDynam(popParam) for iPop = 1:3 popSize1 = popParam(iPop,1); birthRate = popParam(iPop,2); deathRate = popParam(iPop,3); birth = popSize1 * birthRate; death = popSize1 * deathRate; change = birth - death; popSize2 = popSize1 + change; pop(iPop,:) = [popSize2 birth death]; end

function pop=popDynam(popParam) for iPop = [1 2 3] popSize1 = popParam(iPop,1); birthRate = popParam(iPop,2); deathRate = popParam(iPop,3); birth = popSize1 * birthRate; death = popSize1 * deathRate; change = birth - death; popSize2 = popSize1 + change; pop(iPop,:) = [popSize2 birth death]; end What is the output of this function?

function pop=popDynam(popParam) for iPop = [1 3] popSize1 = popParam(iPop,1); birthRate = popParam(iPop,2); deathRate = popParam(iPop,3); birth = popSize1 * birthRate; death = popSize1 * deathRate; change = birth - death; popSize2 = popSize1 + change; pop(iPop,:) = [popSize2 birth death]; end What is the output of this function?

function pop=popDynam(popParam) for iPop = 1:size(popParam,1) popSize1 = popParam(iPop,1); birthRate = popParam(iPop,2); deathRate = popParam(iPop,3); birth = popSize1 * birthRate; death = popSize1 * deathRate; change = birth - death; popSize2 = popSize1 + change; pop(iPop,:) = [popSize2 birth death]; end But the input matrix may be larger….

Selection if (Pop1>60) deathRate=0.15 birthRate=0.12 end

If-else-end if (Pop1>60) deathRate=0.15 birthRate=0.12 else deathRate=0.1 birthRate=0.2 end

If-elseif-end if (Pop1>60) deathRate=0.15 birthRate=0.12 elseif ((Pop1>40) & (Pop1<61)) deathRate=0.13 birthRate=0.18 else deathRate=0.1 birthRate=0.2 end and

Relational operators < > <= >= == (equals) ~= (does not equal) Logical operators & (and) ~ (not) | (or) e.g.,: if ((A>B) | (B~=C))

Logical expressions cab be interpreted >> 10 > 1 ans = 1 >> 10 > 100 ans = 0

Logical expressions cab be applied to vectors and matrices >> popParam popParam = 23.0000 0.2000 0.1000 38.0000 0.2500 0.0500 17.0000 0.5000 0.4000 >> popParam(:,1) > 30 ans = 0 1 0

The “find” command >> popParam popParam = 23.0000 0.2000 0.1000 38.0000 0.2500 0.0500 17.0000 0.5000 0.4000 >> find( popParam(:,1) > 30) ans = 2

Repetition with logical condition >> i = 10; >> while (i > 0) disp(1/i); i = i - 1; end 0.1000 0.1111 0.1250 0.1429 0.1667 0.2000 0.2500 0.3333 0.5000 1 >> commands output

A bug >> i = 10; >> while (i < 11) disp(1/i); i = i - 1; end commands

A bug >> i = 10; >> while (i < 11) disp(1/i); i = i - 1; end 0.1000 0.1111 0.1250 0.1429 0.1667 0.2000 0.2500 0.3333 0.5000 1 Inf -0.5000 -0.3333 commands

>> i = 10; >> while (i < 11) disp(1/i); if (isinf(1/i)) error('Bad number'); end i = i - 1; end 0.1000 0.1111 0.1250 0.1429 0.1667 0.2000 0.2500 0.3333 0.5000 1 Inf ??? Bad number

Download ppt "A bit more about variables >> var1 = [ 1 2 3] var1 = 1 2 3 >> var2 = var1 var2 = 1 2 3 >> var1 = [4 5 6] var1 = 4 5 6 >> var2 var2 = 1 2 3."

Similar presentations