Download as pdf or txt
Download as pdf or txt
You are on page 1of 16

MATLAB Tutorial

ECE 002
Professor S. Ahmadi
Tutorial Outline
• Functions using M-files.
• Numerical Integration using the
Trapezoidal Rule.
• Example #1: Numerical Integration using
Standard Programming (Slow).
• Example #2: Numerical Integration using
Vectorized MATLAB operations (Fast).
• Student Lab Exercises.
What Are Function M-Files
• Function M-files are user-defined subroutines
that can be invoked in order to perform specific
functions.
• Input arguments are used to feed information to
the function.
• Output arguments store the results.
• EX: a = sin(d).
• All variables within the function are local, except
outputs.
NOTE: Local variables are variables that are only used within the
function. They are not saved after the M-file executes.
Example of a Function M-File
function answer = average3(arg1,arg2, arg3)

% A simple example about how MATLAB deals with user


% created functions in M-files.
% average3 is a user-defined function. It could be named
anything.
% average3 takes the average of the three input parameters: arg1,
% arg2, arg3
% The output is stored in the variable answer and returned to the
% user.
% This M file must be saved as average3.m

answer = (arg1+arg2+arg3)/3;
How to call a function in matlab
X = sin(pi);
% call the interior function of Matlab, sin

Y = input(“How are you?”)


% call the interior function of Matlab, input
% input is a function that requests information from
% the user during runtime

Y=average3(1, 2, 3);.
% average3 is a user-defined function.
% The average value of 1,2 and 3 will be stored in Y
Example: Calling a Function from
within the Main program.
% Example1: This is a main program example to
illustrate how functions are called.
% input is a function that requests information from
% the user during runtime.

VarA = input('What is the first number?');


VarB = input('What is the second number?');
VarC = input('What is the third number?');

VarAverage=average3(VarA, VarB, VarC);


% num2str converts a number to a string.
result=[‘The average value was’, num2str(VarAverage)]
Numerical Integration
• General Approximation Made With Num. Integration:
b n

∫ f(x) dx ≈ ∑ ci f(xi)
a i=0

• Trapezoidal rule: • Integration finds the “Area” under


y a curve, between two points (a and b ).
• To approximate the area under a curve,
f(b) use a familiar shape whose area we
already know how to calculate easily.
f(a) • In this case, we’ll use a trapezoid shape.
• Area of trapezoid = ½ (b1 + b2) h
base 2 (b1)
x
a b h
base 2 (b2)
Numerical Integration
• Trapezoidal
y
Rule (con’t) :
• Area under curve ≈ Area of trapezoid
f(b) under the curve
f(a) • Area of trapezoid = ½ h [ b1 + b2 ]
• Area under curve ≈ ½ (b-a) [ f(a) + f(b) ]

• Therefore, Trapezoidal Rule:


x b
a b ∫ f(x) dx ≈ ½ (b-a) [ f(a) + f(b) ]
a

• How can we get a better approximation of


the area under the curve?
• Answer: Use More Trapezoids
Numerical Integration
• More trapezoids give a better
approximation of the area under curve
y
• Add area of both trapezoids together,
f(b) more precise approx. of area under curve
f(x1)
f(a) • Area of trapezoid = ½ h [ b1 + b2 ]
• Area under curve ≈

x Area of Trapezoid 1 Area of Trapezoid 2

a x1 b ½ (x1-a) [ f(a) + f(x1) ] + ½ (b-x1) [ f(x1) + f(b) ]

Simplify:
½ ((b-a)/2) [ f(a) + f(x1) + f(x1) + f(b) ]

Area under curve ≈ (b-a) [ f(a) + 2 * f(x1) + f(b) ]


Numerical Integration
• Using more trapezoids to approximate
area under the curve is called: Composite
Trapezoidal Rule
• The more trapezoids, the better, so
instead of two trapezoids, we’ll use n
trapezoids.
• The greater the value of n , the better our
approximation of the area will be.
Composite Trapezoidal Rule
• Divide interval [a,b] into n equally spaced
subintervals (Add area of the n trapezoids)

b x1 x2 b

∫ f(x) dx ≈ ∫ f(x) dx + ∫ f(x) dx + … + ∫ f(x) dx


a a x1 xn-1

≈ (b-a)/2n [ f(x) + f(x1) + f(x1) + f(x2) +…+ f(xn-1) + f(b)


]
≈ (b-a)/2n [ f(x) + 2 f(x1) + 2 f(x2) +…+ 2 f(xn-1) + f(b) ]
b

∫ f(x) dx ≈ Δx/2 [ y0 + 2y1 + 2y2 + … + 2yn-1 + yn ]


a
Composite Trapezoidal Rule
Example 1 on Numerical Integration
• Implementing Composite Trapezoidal Rule in Matlab
• Example Curve: f(x) = 1/x , let’s integrate it from [e,2e] :
2e 2e
∫ 1/x dx = ln (x) | = ln (2e) – ln (e) = ln (2) = 0.6931
e e
Area under curve: 1/x, from [e,2e]
• Matlab Equivalent Inline(‘1/x’)

function I=Trapez(f, a, b, n) % take f, add n trapezoids,from a to b


% Integration using composite trapezoid rule
h = (b-a)/n ; % increment
s = feval(f,a) ; % starting value
for i=1:n-1
x(i) = a + i*h ; In our case, input to the function will be:
s = s+2 * feval (f,x(i)) ; f = inline (’1/x’)
end a = e = 2.7182818
s = s + feval(f,b) ; b = 2e
I = s*h/2 ;
Example 2 on Numerical Integration: Using
MATLAB Vectorized Operations
• This function carries out the same function as the
previous example, but by using MATLAB Vectorized
operations, it runs much faster.
function I=FastTrap(f, a, b, n)

% Same as the previous Trapezoidal function example, but using more


% efficient MATLAB vectorized operations.

h=(b-a)/n; % Increment value


s=feval(f, a); % Starting value

in=1:n-1;
xpoints=a+in*h; % Defining the x-points
ypoints=feval(vectorize(f),xpoints); % Get corresponding y-points
sig=2*sum(ypoints); % Summing up values in ypoints, and mult. by 2
s=s+sig+feval(f,b); % Evaluating last term
I=s*h/2;
Example 3: Integrating Trapezoidal/FastTrap
Function into Main Program
• Main program to test numerical integration function,
and to measure difference in speed between the two
previous functions.
% Example 3: Main program to run the numerical integration function,
% using the user-created Trapezoidal/FastTrap methods.

fon=inline('log‘); % Defines the function we wish to integrate.


a=exp(1); % Starting point.
b=2*a; % Ending point.
n=1000; % Number of intervals.

tic % Start counter.


OutValue=Trapez (fon, a, b, n) % Calling Trapezoidal function.
toc % Stop counter, and print out counters value.

% Try replacing the Trapez function with the vectorized FastTrap


% function, and notice the difference in speeds between the two.
Example 3: Continuation
• Try two different values of N
– N=1,000
– N=100,000.
• For both N values, test the code using both
functions for the Trapezoidal method: The
normal Trapez Method, and the FastTrap
Method.
• Compare the difference in execution time
between the standard way (Trapez), and the
vectorized approach (FastTrap).
Additional MATLAB Exercise
• Function: y(i) = sin [ x(i) ]
• Where x(i) is “defined” by 101 uniformly spaced
points in [0, 2π ].
• Define the integral:
x(i)

Int (i) = ∫ sin (t) dt


0

• Calculate Int(i) for all values, i = 1, … , 101


• Plot y( i) and Int(i) versus x( i), for i =1, …, 101

You might also like