0% found this document useful (0 votes)
199 views

MATLAB Examples - Flow Control and Loops PDF

This document discusses flow control and loops in MATLAB, including if-else statements, switch-case statements, for loops, and while loops. It provides examples of using these structures to solve algebraic equations, calculate the area and circumference of a circle, generate Fibonacci numbers, and calculate averages. Functions are defined to demonstrate each concept.

Uploaded by

Rameen Hashmi
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
199 views

MATLAB Examples - Flow Control and Loops PDF

This document discusses flow control and loops in MATLAB, including if-else statements, switch-case statements, for loops, and while loops. It provides examples of using these structures to solve algebraic equations, calculate the area and circumference of a circle, generate Fibonacci numbers, and calculate averages. Functions are defined to demonstrate each concept.

Uploaded by

Rameen Hashmi
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 26

MATLAB

Examples
Flow Control and Loops

Hans-Petter Halvorsen, M.Sc.


Flow Control and Loops in MATLAB
Flow Control:
• if-elseif-else statement
• switch-case-otherwise statement
Loops:
• for Loop
• while Loop
The behavior is the same as in other programming languages. It is assumed you know about
For Loops, While Loops, If-Else and Switch statements from other programming languages,
so we will briefly show the syntax used in MATLAB and go through some simple examples.
If-else Statements
Given the second order algebraic equation:
𝑎𝑥 # + 𝑏𝑥 + 𝑐 = 0
The solution (roots) is as follows:

−𝑏 ± 𝑏# − 4𝑎𝑐
, 𝑎≠0
2𝑎
𝑐
𝑥= − , 𝑎 = 0, 𝑏 ≠ 0
𝑏
∅ , 𝑎 = 0, 𝑏 = 0, 𝑐 ≠ 0

ℂ, 𝑎 = 0, 𝑏 = 0, 𝑐 = 0

where ∅ - there is no solution, ℂ - any complex number is a solution


If-else Statements
Create a function that finds the solution for x based on different
input values for 𝑎, 𝑏 and 𝑐, e.g.,
function x = solveeq(a,b,c)

We will do the following:


• Use if-else statements to solve the problem
• Test the function from the Command window to make sure it
works as expected, e.g.,
>> a=0, b=2,c=1
>> solveeq(a,b,c)
You may define the function like this:

function x = solveeq(a,b,c)
if a~=0
x = zeros(2,1);
x(1,1)=(-b+sqrt(b^2-
4*a*c))/(2*a);
x(2,1)=(-b-sqrt(b^2-
4*a*c))/(2*a);
elseif b~=0
x=-c/b;
elseif c~=0
disp('No solution')
else
disp('Any complex number is a
solution')
end
We test the function: 1

>> a=0, b=2,c=1 >> a=1;, b=2;,c=1;


a = >> solveeq(a,b,c)
0 ans =
b = -1
2 0
c =
1
>> solveeq(a,b,c) >> a=1;, b=1;, c=2;>> solveeq(a,b,c)
ans =
-0.5000 ans = -0.5000 + 1.3229i
-0.5000 - 1.3229i

2
3
>> a=0;, b=0;,c=1;
>> solveeq(a,b,c) >> a=0;, b=0;,c=0;
>> solveeq(a,b,c)
No solution Any complex number is a solution
Switch-Case Statements
• Create a function that finds either the Area or the circumference of a
circle using a Switch-Case statement

𝐴 = 𝜋𝑟 #
𝑂 = 2𝜋𝑟

• You can, e.g., call the function like this:

>> r=2;
>> calc_circle(r,1) % 1 means area
>> calc_circle(r,2) % 2 means circumference
We can define the function like this:
function result = calc_circle(r,x)

switch x
case 1
result=pi*r*r;
case 2
result=2*pi*r;
otherwise
disp('only 1 or 2 is legal values for x')
end

Testing the function:


>> r=5;, calc_circle(r,1)
ans = Using an illegal value gives:
78.5398
>> r=5;, calc_circle(r,3)
>> r=5;, calc_circle(r,2)
only 1 or 2 is legal values for x
ans =
31.4159
For Loops
Fibonacci Numbers
• In mathematics, Fibonacci numbers are the numbers in the
following sequence:
0, 1, 1, 2 ,3, 5, 8, 13, 21, 34, 55, 89, 144, …
• By definition, the first two Fibonacci numbers are 0 and 1, and each
subsequent number is the sum of the previous two. Some sources
omit the initial 0, instead beginning the sequence with two 1s.
• In mathematical terms, the sequence 𝑓8 of Fibonacci numbers is
defined by the relation:
𝑓8 = 𝑓89: + 𝑓89#
• with seed values:
𝑓; = 0, 𝑓: = 1
For Loops
Fibonacci Numbers
We will write a function in MATLAB that calculates the N first
Fibonacci numbers, e.g.,
>> fibonacci(N)
ans =
0
1
1
2
3
5
8
13
21
34

We will se a For loop to solve the problem.


We define the Function:
function f = fibonacci(N)

f=zeros(N,1); We execute the function:


f(1)=0; >> fibonacci(N)
f(2)=1; ans =
0
for k=3:N 1
f(k)=f(k-1)+f(k-2); 1
2
end
3
5
8
13
21
34
While Loops
• Create a Script or Function that creates Fibonacci Numbers up
to a given number, e.g.,

>> maxnumber = 2000;


>> fibonacci(maxnumber)
The function can be written like this:
function f = fibonacci2(max)
f(1)=0;
f(2)=1;

k=3;
while f < max

f(k)=f(k-1)+f(k-2); Testing the function gives:


k=k+1;
>> maxnumber=200;
end fibonacci2(maxnumber)

ans =
0 1 1 2 3 5 8
13 21 34 55 89 144 233
For Loops
• Extend your calc_average function from a previous example so
it can calculate the average of a vector with random elements.
Use a For loop to iterate through the values in the vector and
find sum in each iteration:

mysum = mysum + x(i);

• Test the function in the Command window


Previous Version of calc_average function:

We test the function in the Command window

>> z=calc_average(x,y)
z =
3
The function can be written like this:
function av = calc_average2(x)

mysum=0;
N=length(x);

for k=1:N
mysum = mysum + x(k); Testing the function gives:
end >> x=1:5
x =
1 2 3
av = mysum/N; 4 5
>> calc_average2(x)
ans =
3
If-else Statement
Create a function where you use the “if-else” statement to find
elements larger then a specific value in the task above. If this is
the case, discard these values from the calculated average.
Example discarding numbers larger than 10 gives:

x =
4 6 12

>> calc_average3(x)
ans =
5
The function can be written like this:
function av = calc_average2(x)

mysum=0;
total=0;
N=length(x);

for k=1:N Testing the function gives:


x =
if x(k) < 10 4 6 12
mysum = mysum + x(k);
total=total+1; >> calc_average3(x)
end ans =
5
end

av = mysum/total;
Hans-Petter Halvorsen, M.Sc.

University College of Southeast Norway


www.usn.no

E-mail: [email protected]
Blog: http://home.hit.no/~hansha/

You might also like