MATLAB Introduction: Fortran

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 73

MATLAB Introduction

FORTRAN:
real*8 A(10,10), B(10,10), C(10,10)
do i=1,10
do j=1,10
C(i,j) = A(i,j) + B(i,j)
10 continue
20 continue

MATLAB:
C=A+B
What is MATLAB

• High level language for technical computing


• Stands for MATrix LABoratory
• Everything is a matrix - easy to do linear
algebra
The MATLAB System

• Development Environment
• Mathematical Function Library
• MATLAB language
• Application Programming Language (not
discussed today)
MATLAB Desktop
Menu and toolbar

Workspace

History Command
Matrices & Vectors

• All (almost) entities in MATLAB are matrices


• Easy to define: >> A = [16 3; 5 10]
A = 16 3
5 10
• Use ‘,’ or ‘ ’ to separate row elements -- use
‘;’ to separate rows
Matrices & Vectors - II
• Order of Matrix -
of 
– m=no. of rows, n=no. m n
columns

• Vectors - special case


–n=1 
column vector
–m=1 row vector
Creating Vectors and Matrices
• Define >> A = [16 3; 5 10]
A = 16 3
5 10
>> B = [3 4 5
6 7 8]
B = 3 4 5
6 7 8

• Transpose
Matrix:
Vector : >> A=[1 2; 3 4];
>> a=[1 2 3]; >> A'
>> a' ans =
1 1 3
2 2 4
3
Creating Vectors
Create vector with equally spaced intervals
>> x=0:0.5:pi
x =
0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000

Create vector with n equally spaced intervals


>> x=linspace(0, pi, 7)
x =
0 0.5236 1.0472 1.5708 2.0944 2.6180 3.1416

Equal spaced intervals in logarithm space


>> x=logspace(1,2,7)
x =
10.0000 14.6780 21.5443 … 68.1292 100.0000

Note: MATLAB uses pi to represent , uses i or j to represent imaginary


unit
Creating Matrices
• zeros(m, n): matrix with all zeros
• ones(m, n): matrix with all ones.
• eye(m, n): the identity matrix
• rand(m, n): uniformly distributed random
• randn(m, n): normally distributed random
• magic(m): square matrix whose elements have
the same sum, along the row, column and
diagonal.
• pascal(m) : Pascal matrix.
Matrix operations
• ^: exponentiation
• *: multiplication
• /: division
• \: left division. The operation A\B is effectively
the same as INV(A)*B, although left division is
calculated differently and is much quicker.
• +: addition
• -: subtraction
Array Operations
• Evaluated element by element
.' : array transpose (non-conjugated
transpose)
.^ : array power
.* : array multiplication
./ : array division
• Very different from Matrix operations
>> A=[1 2;3 4]; But:
>> B=[5 6;7 8]; >> A.*B
>> A*B 5 12
19 22 21 32
43 50
Some Built-in functions
• mean(A):mean value of a vector
• max(A), min (A): maximum and minimum.
• sum(A): summation.
• sort(A): sorted vector
• median(A): median value
• std(A): standard deviation.
• det(A) : determinant of a square matrix
• dot(a,b): dot product of two vectors
• Cross(a,b): cross product of two vectors
• Inv(A): Inverse of a matrix A
Indexing Matrices
Given the matrix: A = n
0.9501 0.6068 0.4231
m 0.2311 0.4860 0.2774
Then:
A(1,2) = 0.6068
Aij ,i  1...m, j  1...n
A(3) = 0.6068
A(:,1) = [0.9501
index  (i 1)m  j

0.2311
 ]
1:m
A(1,2:3)=[0.6068 0.4231]

Adding Elements to a Vector or a Matrix
>> A=1:3 >> C=[1 2; 3 4]
A= C=
1 2 3 1 2
>> A(4:6)=5:2:9 3 4
A= >> C(3,:)=[5 6];
1 2 3 5 7 9 C=
1 2
>> B=1:2 3 4
B= 5 6
1 2
>> B(5)=7; >> D=linspace(4,12,3);
B= >> E=[C D’]
1 2 0 0 7 E=
1 2 4
3 4 8
5 6 12
Graphics - 2D Plots
plot(xdata, ydata, ‘marker_style’);
For example: Gives:

>> x=-5:0.1:5;
>> sqr=x.^2;
>> pl1=plot(x, sqr, 'r:s');
Graphics - Overlay Plots
Use hold on for overlaying graphs
So the following: Gives:

>> hold on;


>> cub=x.^3;
>> pl2=plot(x, cub,‘b-o');
What is MATLAB

• High level language for technical computing


• Stands for MATrix LABoratory
• Everything is a matrix - easy to do linear
algebra
The MATLAB System

• Development Environment
• Mathematical Function Library
• MATLAB language
• Application Programming Language (not
discussed today)
MATLAB Desktop
Menu and toolbar

Workspace

History Command
Matrices & Vectors

• All (almost) entities in MATLAB are matrices


• Easy to define: >> A = [16 3; 5 10]
A = 16 3
5 10
• Use ‘,’ or ‘ ’ to separate row elements -- use
‘;’ to separate rows
Matrices & Vectors - II
• Order of Matrix -
of 
– m=no. of rows, n=no. m n
columns

• Vectors - special case


–n=1 
column vector
–m=1 row vector
Creating Vectors and Matrices
• Define >> A = [16 3; 5 10]
A = 16 3
5 10
>> B = [3 4 5
6 7 8]
B = 3 4 5
6 7 8

• Transpose
Matrix:
Vector : >> A=[1 2; 3 4];
>> a=[1 2 3]; >> A'
>> a' ans =
1 1 3
2 2 4
3
Creating Vectors
Create vector with equally spaced intervals
>> x=0:0.5:pi
x =
0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000

Create vector with n equally spaced intervals


>> x=linspace(0, pi, 7)
x =
0 0.5236 1.0472 1.5708 2.0944 2.6180 3.1416

Equal spaced intervals in logarithm space


>> x=logspace(1,2,7)
x =
10.0000 14.6780 21.5443 … 68.1292 100.0000

Note: MATLAB uses pi to represent , uses i or j to represent imaginary


unit
Creating Matrices
• zeros(m, n): matrix with all zeros
• ones(m, n): matrix with all ones.
• eye(m, n): the identity matrix
• rand(m, n): uniformly distributed random
• randn(m, n): normally distributed random
• magic(m): square matrix whose elements have
the same sum, along the row, column and
diagonal.
• pascal(m) : Pascal matrix.
Matrix operations
• ^: exponentiation
• *: multiplication
• /: division
• \: left division. The operation A\B is effectively
the same as INV(A)*B, although left division is
calculated differently and is much quicker.
• +: addition
• -: subtraction
Array Operations
• Evaluated element by element
.' : array transpose (non-conjugated
transpose)
.^ : array power
.* : array multiplication
./ : array division
• Very different from Matrix operations
>> A=[1 2;3 4]; But:
>> B=[5 6;7 8]; >> A.*B
>> A*B 5 12
19 22 21 32
43 50
Some Built-in functions
• mean(A):mean value of a vector
• max(A), min (A): maximum and minimum.
• sum(A): summation.
• sort(A): sorted vector
• median(A): median value
• std(A): standard deviation.
• det(A) : determinant of a square matrix
• dot(a,b): dot product of two vectors
• Cross(a,b): cross product of two vectors
• Inv(A): Inverse of a matrix A
Indexing Matrices
Given the matrix: A = n
0.9501 0.6068 0.4231
m 0.2311 0.4860 0.2774
Then:
A(1,2) = 0.6068
Aij ,i  1...m, j  1...n
A(3) = 0.6068
A(:,1) = [0.9501
index  (i 1)m  j

0.2311
 ]
1:m
A(1,2:3)=[0.6068 0.4231]

Adding Elements to a Vector or a Matrix
>> A=1:3 >> C=[1 2; 3 4]
A= C=
1 2 3 1 2
>> A(4:6)=5:2:9 3 4
A= >> C(3,:)=[5 6];
1 2 3 5 7 9 C=
1 2
>> B=1:2 3 4
B= 5 6
1 2
>> B(5)=7; >> D=linspace(4,12,3);
B= >> E=[C D’]
1 2 0 0 7 E=
1 2 4
3 4 8
5 6 12
Graphics - 2D Plots
plot(xdata, ydata, ‘marker_style’);
For example: Gives:

>> x=-5:0.1:5;
>> sqr=x.^2;
>> pl1=plot(x, sqr, 'r:s');
Graphics - Overlay Plots
Use hold on for overlaying graphs
So the following: Gives:

>> hold on;


>> cub=x.^3;
>> pl2=plot(x, cub,‘b-o');
Working with Matrices and Arrays
• Since Matlab makes extensive use of matrices,
the best way for you to get started with
MATLAB is to learn how to handle matrices.
– Separate the elements of a row with blanks or commas.
– Use a semicolon ; to indicate the end of each row.
– Surround the entire list of elements with square brackets, [ ].

A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]


• MATLAB displays the matrix you just entered:
A=
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1

• Once you have entered the matrix, it is automatically


remembered in the MATLAB workspace. You can
simply refer to it as A.

• Keep in mind, variable names are case-sensitive


• When you do not specify an output variable,
MATLAB uses the variable ans, short for answer,
to store the results of a calculation.
• Subscripts
The element in row i and column j of A
is given by A(i,j).
So to compute the sum of the elements in the fourth
column of A, we have:
A(1,4) + A(2,4) + A(3,4) + A(4,4)
Which produces:
ans = 34
• The Colon Operator
• For example: 1:10
is a row vector containing the integers from 1 to 10:
1 2 3 4 5 6 7 8 9 10

• To obtain non-unit spacing, specify an increment. For


example: 100:-7:50 will give you
100 93 86 79 72 65 58 51

• Subscript expressions involving colons refer to portions


of a matrix. For example: A(1:k,j)
refers to the first k elements of the jth column of A.
• Numbers
MATLAB uses conventional decimal notation, with an
optional decimal point and leading plus or minus sign, for
numbers. Scientific notation uses the letter e to specify
the power. Imaginary numbers use either i or j as a
suffix. Examples of legal numbers are:
3 -99 0.0001
9.6397238 1.60210e-20 6.02252e23
1i -3.14159j 3e5i

MATLAB software stores the real and imaginary parts


of a complex number.
• The Load Function
The load function reads binary files containing matrices
generated by earlier MATLAB sessions, or reads text files
containing numeric data.

• M-Files
You can create your own programs using M-files, which
are plain text files containing MATLAB code. Use the
MATLAB Editor or another text editor to create a file
containing the same statements you would type at the
MATLAB command line. Save the file under a name that
ends in .m
• Arrays
Arithmetic operations on arrays are done element by
element. This means that addition and subtraction are the
same for arrays and matrices, but that multiplicative
operations are different. MATLAB uses a dot, or decimal
point, as part of the notation for multiplicative array
operations.
Example: A.*A
the result is an array containing the squares of the integers
ans =
256 9 4 169
25 100 121 64
81 36 49 144
16 225 196 1
• Multivariate Data
MATLAB uses column-oriented analysis for multivariate
statistical data. Each column in a data set represents a
variable and each row an observation. The (i,j)th element is
the ith observation of the jth variable.

As an example, consider a data set with three variables:


• Heart rate • Weight • Hours exercise per week

For five observations, the resulting array might look like


• D = [ 72 134 3.2
81 201 3.5
69 156 7.1
82 148 2.4
75 170 1.2 ]
• Plotting Multiple Data Sets in One Graph
– Multiple x-y pair arguments create multiple graphs with a
single call to plot.
For example: x = 0:pi/100:2*pi;
y = sin(x);
y2 = sin(x-.25);
y3 = sin(x-.5);
plot(x,y,x,y2,x,y3)
• Specifying Line Styles and Colors
It is possible to specify color, line styles, and markers
(such as plus signs or circles) when you plot your data
using the plot command:
plot(x,y,'color_style_marker')

For example: plot(x,y,'r:+')


plots a red-dotted line and places plus sign markers at
each data point.
Programming in Matlab
• Conditional Control
- if, else, elseif
- switch, case
• Loop Control
- for, while, continue, break
• Error Control
- try, catch
• Program Termination
- return
Multidimensional Arrays
• One way of creating a multidimensional array is by
calling zeros, ones, rand, or randn with more than
two arguments.

For example: R = randn(3,4,5);


creates a 3-by-4-by-5 array with a total of 3*4*5 = 60
normally distributed random elements.
Scripts and Functions
• There are two kinds of M-files:
- Scripts, which do not accept input arguments or return
output arguments. They operate on data in the
workspace. Any variables that they create remain in the
workspace, to be used in subsequent computations

- Functions, which can accept input arguments and


return output arguments. Internal variables are local to
the function.
• Global Variables
• If you want more than one function to share a
single copy of a variable, simply declare the variable
as global in all the functions. The global declaration
must occur before the variable is actually used in a
function.
Example: function h = falling(t)
global GRAVITY
h = 1/2*GRAVITY*t.^2;
Generating Vectors from functions
• zeros(M,N) MxN matrix of zeros x = zeros(1,3)
x =
0 0 0

• ones(M,N) MxN matrix of ones


x = ones(1,3)
x =
1 1 1
• rand(M,N) MxN matrix of uniformly
distributed random x = rand(1,3)
numbers on (0,1) x =
0.9501 0.2311 0.6068
Matrix Index
• The matrix indices begin from 1 (not 0 (as in C))
• The matrix indices must be positive integer
Given:

A(-2), A(0)

Error: ??? Subscript indices must either be real positive integers or logicals.

A(4,2)
Error: ??? Index exceeds matrix dimensions.
Concatenation of Matrices
• x = [1 2], y = [4 5], z=[ 0 0]

A = [ x y]

1 2 4 5

B = [x ; y]

1 2
4 5

C = [x y ;z]
Error:
??? Error using ==> vertcat CAT arguments dimensions are not consistent.
Operators (arithmetic)
+ addition
- subtraction
* multiplication
/ division
^ power
‘ complex conjugate transpose
Matrix Index
• The matrix indices begin from 1 (not 0 (as in C))
• The matrix indices must be positive integer
Given:

A(-2), A(0)

Error: ??? Subscript indices must either be real positive integers or logicals.

A(4,2)
Error: ??? Index exceeds matrix dimensions.
Concatenation of Matrices
• x = [1 2], y = [4 5], z=[ 0 0]

A = [ x y]

1 2 4 5

B = [x ; y]

1 2
4 5

C = [x y ;z]
Error:
??? Error using ==> vertcat CAT arguments dimensions are not consistent.
Operators (arithmetic)
+ addition
- subtraction
* multiplication
/ division
^ power
‘ complex conjugate transpose
Matrices Operations

Given A and B:

Addition Subtraction Product Transpose


Operators (Element by Element)

.*element-by-element multiplication
./ element-by-element division
.^element-by-element power
The use of “.” – “Element” Operation
A = [1 2 3; 5 1 4; 3 2 1]
A=
1 2 3
5 1 4
3 2 -1

b = x .* y c=x./y d = x .^2
x = A(1,:) y = A(3 ,:)
b= c= d=
x= y= 3 8 -3 0.33 0.5 -3 1 4 9
1 2 3 3 4 -1
K= x^2
Erorr:
??? Error using ==> mpower Matrix must be square.
B=x*y
Erorr:
??? Error using ==> mtimes Inner matrix dimensions must agree.
Basic Task: Plot the function sin(x) between
0≤x≤4π
• Create an x-array of 100 samples between 0 and
4π.

>>x=linspace(0,4*pi,100);

• Calculate sin(.) of the x-array


1

0.8

0.6

>>y=sin(x); 0.4

0.2

• Plot the y-array 0

-0.2

-0.4

-0.6

>>plot(y) -0.8

-1
0 10 20 30 40 50 60 70 80 90 100
Plot the function e-x/3sin(x) between 0≤x≤4π

• Create an x-array of 100 samples between 0


and 4π.
>>x=linspace(0,4*pi,100);

• Calculate sin(.) of the x-array


>>y=sin(x);

• Calculate e-x/3 of the x-array


>>y1=exp(-x/3);

• Multiply the arrays y and y1


>>y2=y*y1;
Plot the function e-x/3sin(x) between 0≤x≤4π

• Multiply the arrays y and y1 correctly


>>y2=y.*y1;

• Plot the y2-array


0.7

>>plot(y2) 0.6

0.5

0.4

0.3

0.2

0.1

-0.1

-0.2

-0.3
0 10 20 30 40 50 60 70 80 90 100
Display Facilities
0.7

0.6

• plot(.)
0.5

0.4

0.3

Example:
0.2

0.1
>>x=linspace(0,4*pi,100); 0

>>y=sin(x); -0.1

>>plot(y) -0.2

>>plot(x,y) -0.3
0 10 20 30 40 50 60 70 80 90 100

0.7

• stem(.) 0.6

0.5

0.4

0.3

Example:
0.2

0.1
>>stem(y) 0

>>stem(x,y) -0.1

-0.2

-0.3
0 10 20 30 40 50 60 70 80 90 100
Display Facilities
• title(.)
>>title(‘This is the sinus function’)
This is the sinus function
1

0.8

• xlabel(.) 0.6

0.4

>>xlabel(‘x (secs)’) 0.2

sin(x)
0

-0.2

• ylabel(.) -0.4

-0.6

-0.8
>>ylabel(‘sin(x)’) -1
0 10 20 30 40 50 60 70 80 90 100
x (secs)
Operators (relational, logical)
• == Equal to
• ~= Not equal to
• < Strictly smaller
• > Strictly greater
• <= Smaller than or equal to
• >= Greater than equal to
• & And operator
• | Or operator
Flow Control
• if
• for
• while
• break
• ….
Control Structures
Some Dummy Examples
• If Statement Syntax
if ((a>3) & (b==5))
Some Matlab Commands;
if (Condition_1) end
Matlab Commands
if (a<3)
elseif (Condition_2) Some Matlab Commands;
Matlab Commands elseif (b~=5)
Some Matlab Commands;
elseif (Condition_3) end
Matlab Commands
if (a<3)
else Some Matlab Commands;
Matlab Commands else
end Some Matlab Commands;
end
Control Structures
Some Dummy Examples
• For loop syntax for i=1:100
Some Matlab Commands;
end

for i=Index_Array for j=1:3:200


Some Matlab Commands;
Matlab Commands end

end for m=13:-0.2:-21


Some Matlab Commands;
end

for k=[0.1 0.3 -13 12 7 -9.3]


Some Matlab Commands;
end
Control Structures
• While Loop Syntax

Dummy Example
while (condition)
while ((a>3) & (b==5))
Matlab Commands Some Matlab Commands;
end
end
Use of M-File
Click to create a
new M-File

• Extension “.m”
• A text file containing script or function or program to run
Use of M-File
Save file as Denem430.m

If you include “;” at the


end of each statement,
result will not be shown
immediately
Writing User Defined Functions
• Functions are m-files which can be executed by specifying
some inputs and supply some desired outputs.
• The code telling the Matlab that an m-file is actually a function
is
function out1=functionname(in1)
function out1=functionname(in1,in2,in3)
function [out1,out2]=functionname(in1,in2)

• You should write this command at the beginning of the m-file


and you should save the m-file with a file name same as the
function name
Writing User Defined Functions
• Examples
– Write a function : out=squarer (A, ind)
• Which takes the square of the input matrix if the input
indicator is equal to 1
• And takes the element by element square of the input matrix
if the input indicator is equal to 2

Same Name

Writing User Defined Functions
Another function which takes an input array and returns the sum and product of its
elements as outputs

• The function sumprod(.) can be called from command window or an m-file as


Notes:
• “%” is the neglect sign for Matlab (equaivalent
of “//” in C). Anything after it on the same line
is neglected by Matlab compiler.
• Sometimes slowing down the execution is
done deliberately for observation purposes.
You can use the command “pause” for this
purpose
pause %wait until any key
pause(3) %wait 3 seconds
Useful Commands

• The two commands used most by Matlab


users are
>>help functionname

>>lookfor keyword

You might also like