matlab course - folk.uio.nofolk.uio.no/gunnarw/matlab_kurs/students/geo... · matlab course anna...
TRANSCRIPT
![Page 1: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/1.jpg)
Matlab Course
Anna Kristine Wahlin
Department of Geophysics, University of Oslo
January 2003
Matlab Course – p.1/??
![Page 2: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/2.jpg)
Day 1
Day 1 – p.2/??
![Page 3: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/3.jpg)
Matlab
Matlab is a program for scientific computing and visualiza-
tion. Its strength is that it is easy to learn, and you can use
advanced mathematical methods and visualization tools
right from the start. For some applications it is directly in-
appropriate to use Matlab. Today’s lectures are concluded
with some tips concerning Matlabs usefulness for different
computations. There are large improvements in the latest
version of Matlab (6.5) in particular with regard to comput-
ing speed. Matlab 6.5 is comparable in speed to Fortran
and C/C++.Day 1 – p.3/??
![Page 4: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/4.jpg)
Today
� Getting started (demonstration)
� Linear algebra with Matlab
� Creating scripts and functions
� Optimalization
Day 1 – p.4/??
![Page 5: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/5.jpg)
Day 2: Using Matlab
� Data treatment
� Mathematical methods
� Differential equations
Day 1 – p.5/??
![Page 6: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/6.jpg)
Day 3: Visualization
� Creating different types of illustrations
� Interactive editing
� Handle graphics
� Movies
Day 1 – p.6/??
![Page 7: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/7.jpg)
Recommended books
� Introduction to Matlab 6 by Etter, Kuncicky and Hull.Prentice Hall, 2002 (239 NOK, paperback)
� Numerical analyses and Graphic visualization withMatlab (second edition) by Nakamura. Prentice Hall,2002 (879 NOK, hardback)
� Mastering Matlab 6 - A Comprehensive Tutorial andReference by Hanselman and Littlefield. PrenticeHall, 2002 (459 NOK, paperback)
Day 1 – p.7/??
![Page 8: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/8.jpg)
Getting started
A summary of the demonstration is given as hand-out (Get-
tingStarted.pdf). A list of all the commands and Matlab re-
sponses can be found in Demo.pdf.
Day 1 – p.8/??
![Page 9: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/9.jpg)
What is an m-file?
� An m-file is a file with extension .m
� It can be used to store commands
� Matlab reads and executes the commands in anm-file if you type the name of the file in the commandwindow
Day 1 – p.9/??
![Page 10: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/10.jpg)
Different ways of creating m-files
� Use an ordinary text editor and save the file asfilename.m
� Choose ’new file’ under the File Menu
� If you have already executed the commands ’byhand’, you can mark them in the history window andthen right-click. The option ’make m-file’ thenappears
Day 1 – p.10/??
![Page 11: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/11.jpg)
Example (myfile.m)
clear % clears the workspace
x = linspace(-pi/2,pi/2,50); % Creates vector x
y = linspace(-pi/2,pi/2,50)’; % Creates vecor y
z = exp(-y.ˆ2)*exp( -x.ˆ2).*(sin(4*y)*cos(4*x));% Calculates the matrix z
mesh(z) % Draws a mesh plot of z
Day 1 – p.11/??
![Page 12: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/12.jpg)
Matrix Laborations
� Basic matrix functions
� Creating functions
� Loops and logical tests
Day 1 – p.12/??
![Page 13: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/13.jpg)
Matrix operations
� Besides the elementary functions that are defined forscalars (and operate element-wise on the matrix)there are several functions that are specific formatrices. The most important of these are given ashand-out. A few will now be demonstrated using alinear equation system as example.
Consider the system of linear equations given by
� �� � � �� � �� � ��
� �� � � �� � �� � �
�� � � �� � � �� � �
(1)
Day 1 – p.13/??
![Page 14: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/14.jpg)
Using matrix notation the above can also be written
� � � ��� (2)
where
� ��
��� � �
� � �
� � ��
� ��
����
����
�� �
���
� ��
�
� (3)
The solution to the system is given by
� � �� � � � (4)
Day 1 – p.14/??
![Page 15: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/15.jpg)
In Matlab there are two ways of solving this problem.
� Calculate the inverse of
� � �� ��
, then find � byleft-multiplication of
�
with
� � �
� Left-division of
�
with
�In the first case the function inv(A) is used to find theinverse. This is then multiplied by b. The Matlab code forthis operation isA = [3, 2, 1; 2, 3,1; 1, 2, 3];b = [39; 34; 26];x = inv(A)*b
In the second case left- division is performed straightaway with the commandx = A\b
One option is faster than the other Day 1 – p.15/??
![Page 16: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/16.jpg)
Example
solvetime.mA = rand(1000,1000); % Creates a random
% matrix Ab = rand(1000,1); % Creates a random
% vector b
det(A) % Calculates the determinant% of A
tic, % Starts the time-watchx = inv(A)*b; % Solves the systemtoc % Stops the watch
tic, y = A\b; toc % Solves and times the system% with left division
Day 1 – p.16/??
![Page 17: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/17.jpg)
Example
compres.mclear % Clears the workspaceload example % Loads matrix A and vector b
% from file example to the% workspace
x1 = inv(A)*b; % Calculates x using the% inverse
x2 = A\b; % Calculates x using% left-division
ind = 1:length(x1); % Creates index for the plotplot(ind,x1,ind,x2) % Plots the two solutions
Day 1 – p.17/??
![Page 18: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/18.jpg)
Over- and under-determined equationsystems
Matlab can also handle over- and under-determinedequation systems. The optimal solution (in a least-squaresense) is then found.overdet.m
clear % Clears the workspace
A = rand(1000,999);b = rand(1000,1); % Creates a vector b of
% random numbers
tic, x = A\b; toc % Solves the system with% a least-square fit,% and times the operation
Day 1 – p.18/??
![Page 19: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/19.jpg)
When you write something in Matlab’s command window,the following things are checked in turn:
� 1. Is there such a variable in the workspace?
� 2. Is there an m-file called that thing in the currentdirectory?
� 3. Is there an m-file called that somewhere else?
When Matlab searches for the m-file it looks in specific fold-
ers, its search path. If the folder is not added to the path
Matlab can not run your script.
Day 1 – p.19/??
![Page 20: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/20.jpg)
How to make sure Matlab finds yourm-file
� Change current directory using the cd command orby clicking in the Directory panel
� Select the ’Set Path’ option in the File menu
� Type one of the following commands in thecommand window:
addpath C:\Program\Matlab6k5\myfiles
path(path,’C:\Program\Matlab6k5\myfiles’)
Day 1 – p.20/??
![Page 21: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/21.jpg)
The added path will not be found by Matlab the next timeyou start the program. In order to make permanentchanges to Matlab’s search path you can
� Type path2rc after the addpath command
� Type the path in the file called ’pathdef.m’
� Write the addpath command in the file ’startup.m’(this file is run every time Matlab starts up)
� Modify the environment variable MATLABPATH
Day 1 – p.21/??
![Page 22: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/22.jpg)
Example
myfun.m
function y = myfun(t)
y = t * sin(t);
Day 1 – p.22/??
![Page 23: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/23.jpg)
What is a function
� A function is an m-file beginning with the word’function’
� A function has a user-specified input and output
� A function has its own ’local’ workspace. Variablesdefined in the function are not stored in the ordinaryworkspace. Nor are your workspace variablesaltered if given a new value in the ’local’ workspace.A function does not assign any values to anything
� Exception to this rule is if you define a globalvariable. Type ’help global’ for more information
� You can have several functions stored in one file.The ’subfunctions’ work exactly as a normal function,but can not be axcessed directly from the commandwindow (unlike other languages). Day 1 – p.23/??
![Page 24: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/24.jpg)
Example
spir.m
function [x,y] = spir(t)x = cos(20*t).*exp(-t.ˆ2);y = sin(20*t).*exp(-t.ˆ2);
spirplot.m
function [x,y] = spirplot(t)x = cos(20*t).*exp(-t.ˆ2);y = sin(20*t).*exp(-t.ˆ2);plot(x,y)
Day 1 – p.24/??
![Page 25: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/25.jpg)
Example
spir3.mfunction [x,y,z] = spir3(t)
x = cos(20*t).*exp(-t.ˆ2);y = sin(20*t).*exp(-t.ˆ2);z = exp(-t.ˆ2);plot3(x,y,z)
Day 1 – p.25/??
![Page 26: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/26.jpg)
Loops
A for-loop assigns a number of different values to aparameter, then stops performing the task. Begins withthe word ’for’, ends with the word ’end’.for n = 1:N
a(n) = 1/n;end
You can write the loops directly in the command window:
>> for n = 1:N, t(n) = 1/n; end>> for r = linspace(0,1,20), q = sin(r); end>> for a = A, plot(a), end
Commas separate several commands on a line. If
�
is a
matrix the loop variable becomes a vector of the separate
columns in ADay 1 – p.26/??
![Page 27: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/27.jpg)
Example
forloop2.mclear % Clears the workspace
A = peaks; % A is the test-matrix% peaks
for a = Aplot(a) % a obtains the value of
% each column in Adrawnow % Updates the figure window
% immediatelyend
Day 1 – p.27/??
![Page 28: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/28.jpg)
Example
ApBloop.m
A = ones(1000,1000); % Creates matrices A and BB = zeros(1000,1000);C = zeros(1000,1000);
tic, % Starts the stop-watchfor n = 1:1000 % Start of the first for-loop
for m = 1:1000 % Start of the second for -loopC(n,m) = A(n,m)+B(n,m);
end % Ends the second loopend % Ends the second looptoc
tic, C = A+B; toc
The computation is approximately 15 times faster without
the loop!
Day 1 – p.28/??
![Page 29: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/29.jpg)
Example
resizeloop.m
A = ones(500,500); % Creates matrices A, B and CB = zeros(500,500);
tic, C = A+B; toc
tic, % Starts the stop-watchfor n = 1:500 % Start of the first for-loop
for m = 1:500 % Start of the second for -loopC(n,m) = A(n,m)+B(n,m);
end % Ends the first loopend % Ends the second looptoc
The computation is 400 times faster without the loop!
Avoid loops and never resize matrices inside the loops.
Day 1 – p.29/??
![Page 30: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/30.jpg)
Loops
A while-loop performs a task until a logical test provesfalse. Begins with the word ’while’, ends with the word’end’
while t < tmax,a = sin(t);t = t + dt;
end
Day 1 – p.30/??
![Page 31: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/31.jpg)
Example
whileloops.mclear % Clears the workspace
t = 0; % Initial value of ttmax = 10; % End value of t
while t < tmax % Starts the while-loopa = sin(t);t = t + dt; % Increments t
end % Ends the while-loop
a = 1;while a > 0.1 % Starts the while-loop
a = rand; % calculates aend % Ends the while-loop
Day 1 – p.31/??
![Page 32: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/32.jpg)
Emergency exit
If you want to interrupt a loop while it is running, type
Ctrl+C. If you are working on a remote computer, try giv-
ing the Ctrl+C command in the window that controls the re-
mote access (e. g. the xterm-window) rather than in the
Matlab command window.
Day 1 – p.32/??
![Page 33: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/33.jpg)
Logical tests
Logical operators perform a test and returns 0 if the testproved false and 1 if it proved true. Standard logical testsare:
�
== equal
�
˜= not equal
�
> larger than
�
< smaller than
�
>= larger than or equal
�
<= smaller than or equal
Logical expressions may also be combined using:
�
| or
�
& and
Day 1 – p.33/??
![Page 34: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/34.jpg)
Example
whiletest.m
while ((a > 0.1) & (a < 0.9))a = rand;n = n+1;
end
Day 1 – p.34/??
![Page 35: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/35.jpg)
Branch statements
Performs a task if a logical test prove true and skips thetask if it prove false. Begins with the word ’if’, ends withthe word ’end’.For example, the statement:
� � � � � �� � � � � � � � � � � (5)
is written in Matlab code as
if a == 0 | a > 2b = 1;
end
Day 1 – p.35/??
![Page 36: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/36.jpg)
Logical matrix
When logical tests are performed on a matrix, a logicalmatrix is returned. A scalar can be compared to anymatrix, but two matrices can only be compared if they arethe same size. There are special matrix-tests that returna single value, for example the function isequal thatreturns 1 if the two matrices are of the same size and allelements are equal.Example (logmat.m):A = [1 0 3; -2 3 0];B = [2 -3 4; 2 1 -0.1];
A > B
returns
ans =0 1 00 1 1
Day 1 – p.36/??
![Page 37: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/37.jpg)
Work smarter!
� Save time
� Save CPU time
� May become an issue if your program works!Tempting to increase domain or decrease gridsize and time step
Day 1 – p.37/??
![Page 38: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/38.jpg)
Save time
� Use Matlab!
� Document your scripts and functions: Addcomments and help.If the first lines in an m-file are commented, these willbe displayed in the command window when you typehelp filename
� Indents makes it easier to read the program
� Include error possibilities in your functions andscripts:error(’error message’)stops the execution and displays the error messagein the command window.
Day 1 – p.38/??
![Page 39: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/39.jpg)
Save time
� Start scripts with ’clear’
� Think about what is best, function or script
� Functions may be slower CPU-wise but still savetime if used often
� The good thing with functions is that they do notassign any values to anything
� Try to divide your problems into smaller parts. Forexample it might be useful to have separate scriptsfor visualising your result
Day 1 – p.39/??
![Page 40: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/40.jpg)
Save time
� Have a system when you name your variables
� Matrix: Capital letters
� Natural numbers: m, n, p, q
� Global variables: long names with capital letters
� If you get stuck, try the debug option
� Read the manual (or visit helpdesk) sometimes
� Visit the web and user-groups
Day 1 – p.40/??
![Page 41: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/41.jpg)
Save CPU-time
� Do not resize matrices in loops - define the matrixbefore the loop (same as prealloc memory).
Resizeloop2.m
tic,A(5e4) = 0; % Presizes Afor n = 1:5e4,
A(n) = sin(n)*n; % Computes sin(n)*n without% resizing the matrix
end,toc
clear % Clear the workspace
tic,for n = 1:5e4
A(n) = sin(n)*n; % Computes sin(n)*n and resizes% the matrix A each step
endtoc
Day 1 – p.41/??
![Page 42: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/42.jpg)
� Use matrices rather than loops whenever possible.Include matrix arguments in your functions.
vectorize.m
% Compares the computational speed of% vectorized code and a for-loop
clear
tic,A = sin(1:1e6).*[1:1e6]; % Vectorized codetoc
tic,for n = 1:1e6
A(n) = sin(n)*n; % For-loopendtoc
� The difference is not always so great!Day 1 – p.42/??
![Page 43: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/43.jpg)
� User defined functions usually take a little longerthan built-in functions ....
userfun1.m
% Compares the computational speed of when a% user-defined function is called
x = linspace(0,10,1e6);tic, A = f(x);toc % user-defined function
tic,A = exp(-x.ˆ2).*sin(x).*x; % Built-in functionstoc
f.m
function y = f(x)y = exp(-x.ˆ2).*sin(x).*x;
Day 1 – p.43/??
![Page 44: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/44.jpg)
� ......but can take a LOT longer:
userfun2.m
clear
A(1e5) = 0; % Presizes A
tic,for n = 1:1e5
% Built-in functionsA(n) = exp(-n.ˆ2).*sin(n).*n;
endtoc
tic,for n = 1:1e5
A(n) = f(n); % User -defined functionendtoc
Day 1 – p.44/??
![Page 45: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/45.jpg)
What slows down the program?
The new, fast Matlab (comparable in speed to Fortran)has accelerated loops that computes almost as fast asvectorized code. However, the accelerated loops onlywork with built -in functions. Furthermore, it does notwork for all datatypes. Although a ll common datatypesare included it is important that there is no confusion overwhich datatype is used. For example, 2*i is notaccelerated but 2i is.
If accelerated code is ’interrupted’ by an unaccelerated
command, the rest of that line executes as ’slow’ code
(Matlab 5 speed).
Day 1 – p.45/??
![Page 46: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/46.jpg)
acctest.m
clearA = rand(500,500);B = zeros(500,500);ticMe.name = ’Anna’; % Breaks the accelerated
% code (structure)for n = 1:500 % Start of the first for-loop
for m = 1:500 % Start of the second for-loopB(n,m) = sin(A(n,m))*cos(A(n,m));
end % Ends the second loopend % Ends the second looptoc
tic,Me.name = ’Anna’; for n = 1:500, for m = 1:500, B(n,m) = sin(A(n,m))*cos(A(n,m)); end, end, toc
Try not to write many commands in one line!
Day 1 – p.46/??
![Page 47: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/47.jpg)
Summary Day 1
Matlab is extremely easy to use. It is a perfekt tool for’checking out’ different problems when you need a quick,easy way to visualise them.The big drawback with Matlab has always been thecomputation speed. The new Matlab is comparable inspeed to Fortran and C/C++ but only if you use it rigtht. It iseasy to slow down the program!
For applications when you need to define other classes
than matrixes Matlab is both slow and difficult.
Day 1 – p.47/??
![Page 48: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/48.jpg)
Day 2
Day 2 – p.48/??
![Page 49: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/49.jpg)
Importing and exporting data
� Matlab supports most (all?) common data formats.For example binary, ascii, CDF, Excel worksheet aswell as Matlabs ’own’ type mat-file (binary). A list ofall compatible types is given as hand-out.
Day 2 – p.49/??
![Page 50: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/50.jpg)
Importing and exporting data
There are two ways of importing and exporting data inMatlab.
� Import wizard
� Interface that guides you through the importprocedure, and automatically choses the rightoptions for the specific (formatted) data type.
� Possibility to preview and make initialadjustments of the data. Export data as .mat
� Commands
� This way is quicker if you e. g. are importingseveral files of similar type, or are used to doingit ’the old way’
� If you want to export data in different formats youmust type! Day 2 – p.50/??
![Page 51: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/51.jpg)
Demonstration
� Import wizard
Day 2 – p.51/??
![Page 52: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/52.jpg)
Typing import commands
� Mat-files (Matlabs own binary storage file)
load filename save filename
load filename A B save filename A B
� Ascii-files
load -ascii filename A Bsave -ascii filename A B
try1.m: load -ascii VIK_1990.dat
� Number of columns in ascii file must be equal for allrows
Day 2 – p.52/??
![Page 53: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/53.jpg)
Typing import commands
� Delimited text files
A = dlmread(’filename’,’delimiter’)Reads the file ’filename’ into the variable Adelimiter:
Can be anything, e. g.’ ’ = space delimited’\t’ = tab delimited
try2.m: A = dlmread(’VIK_1990.dat’,’ ’)
Day 2 – p.53/??
![Page 54: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/54.jpg)
Typing import commands
A = dlmread(’filename’,’delimiter’,RANGE)
Reads a portion of the file ’filename’ into the variable A.RANGE = [Rstart Cstart Rend Cend] specifies the row Rand column C where to start and end reading. It can benoted that R and C start at zero, i. e. Cstart = 0 indicatesthe first column and so on.
� dlmread fills empty places in the data with zeros
� dlmwrite(’filename’,Var,’delimiter’)Writes the variable Var into the file ’filname’ using thespecified delimiter
try3.m: A = dlmread(’VIK_1990.dat’,’ ’,[1 0 8760 4]);
Day 2 – p.54/??
![Page 55: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/55.jpg)
Typing import commands
� Binary files
fid = fopen(’filename’,’permission’)A = fread(fid,size,precision)
Reads the data in file ’filename’ into the variable A
fid = fopen(’filename’,’permission’)fwrite(fid,A,precision)
Writes the variable A with the desired precision into thefile ’filename’. The data is written in column order.
help iofun
More information about import/export of data
Day 2 – p.55/??
![Page 56: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/56.jpg)
Typing import commands
binwrite.m
% writes the data stored in Data to the bi-nary file VIK_yrs.bin
fid = fopen(’VIK_yrs.bin’,’wb’) % open filefwrite(fid,[Time,Sealv1]’,’float’); % write data to file
% transpose% before write
fclose(fid); % close filefigure(1), plot(Time,Sealv1) % plots datatitle(’Data before writing to binary file’)
Day 2 – p.56/??
![Page 57: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/57.jpg)
Typing import commands
� Binary files
binread.m
clear
fid = fopen(’VIK_yrs.bin’,’rb’); % open fileData = fread(fid,[2 inf], ’float’); % read in dataTime = Data(1,:)’; % tarnspose data
% to columnsSealv1 = Data(2,:)’;fclose(fid); % close file
figure(2), plot(Time,Sealv1) % plots datatitle(’Data after reading from binary file’)
Day 2 – p.57/??
![Page 58: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/58.jpg)
Data treatment.
Matlab has a wide range of different functions forstatistical and time-series analyses of data. Here only afew will be demonstrated. The purpose is to teach theprinciple, instructions for use of more functions can befound with the built-in help.
� Time-series analyses
� Curve fitting
� Interpolation
� Statistics
Day 2 – p.58/??
![Page 59: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/59.jpg)
Fourier transforms
Matlab uses the complex discrete Fourier transform
��� �� �
,
� � � � � �
����
� � � � � ��� � � � � �� � � �� � � � � �� (6)
where � is an equally spaced data set of
�
points. Aspectrum of a time series may be obtained from theabsolute value of the discrete Fourier transform. Toobtain the Fourier transform, use the function fft (one-dimensional), fft2 (two-dimensional) or fftn(n-dimensional). To obtain the inverse, use ifft(one-dimensional), ifft2 (two-dimensional) or ifftn (n-dimensional).
ExampleDay 2 – p.59/??
![Page 60: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/60.jpg)
spectrum.m
clear
readfiles
FT = fft(Sealv1);spkt = abs(FT).ˆ2;loglog([1:length(spkt)]./length(spkt),spkt), xla-bel(’Frequency (h-1)’)
Day 2 – p.60/??
![Page 61: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/61.jpg)
Curve fitting
� Fitting data to polynomial
A dataset may be fitted into a polynomial of degree N byuse of the function polyfit. The error is minimized in aleast square-sense.A = polyfit(y,x,N)returns the coefficients of the polynomial ���
� � �
defined as
� �� � � � � � �� � � �� � ��� � ��� � � � �� �
� � �� � � �� (7)
Where
� � � � �� � �� � � � � � � �� � �� � �� �
Day 2 – p.61/??
![Page 62: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/62.jpg)
cfit1.m
clear % clear the workspaceA = dlmread(’VIK_1990.dat’,’ ’,[1 0 8760 4]);
y = A(:,5); % the datax = [1:length(y)]’;
a = polyfit(x,y,1);yfit = polyval(a,x);
close(gcf)plot(x,y,’b’,x,yfit,’x’)
Day 2 – p.62/??
![Page 63: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/63.jpg)
cfit2.m
clear % clear the workspaceA = dlmread(’VIK_1990.dat’,’ ’,[1 0 8760 4]);
y = A(:,5); % the datax = [1:length(y)]’;
a = polyfit(x,y,1);yfit = polyval(a,x);
a = polyfit(x,y,2);yfit2 = polyval(a,x);
a = polyfit(x,y,7);yfit7 = polyval(a,x);
plot(x,y,’b’,x,yfit1,’x’,x,yfit2,’g’,x,yfit7,’k’)
Day 2 – p.63/??
![Page 64: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/64.jpg)
Curve fitting
� Curve fitting with arbitrary functions
The ability to solve over-determined equation systemscan be used to fit a data set into a linear combination ofarbitrary functions. Instead of the polynomial in previousexample, use a sum of arbitrary functions
� �� � � � �� �� � � � � �� �� � � � � � � � � � � � � � � �
(8)
The coefficients � �are to be determined so that the error is
minimized.
Day 2 – p.64/??
![Page 65: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/65.jpg)
Curve fitting
� Curve fitting with arbitrary functions
By computing the function values at each data point anover-determined equation system is obtained,
�� � �,
where
� ��
������� � �� � �� � �� �
� � �
� � � �� �
�� � �� � �� � �� �
� � �
� � � �� �
� � � � � � � � � � � �
�� � � �� �� � � ��
� � �
� � � � ��
��
� ��
�������
��� � �
� ��
�� �
������
����
� �� �
(9)
Day 2 – p.65/??
![Page 66: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/66.jpg)
Interpolation
Matlab has built-in functions for interpolating sampled data
in N dimensions. The sampling points must be sorted in
ascending order(2 dimensions or higher), but may be irreg-
ularly spaced. Linear interpolation is performed by default,
but other methods can be used by specifying a ’method’ in-
put in the interp functions.
Day 2 – p.66/??
![Page 67: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/67.jpg)
Interpolation
One-dimensional interpolation is performed by use of thefunction interp1.
� � � � � � � � � � � � � � � � � � � � � � �
takes the original data �
(measured at points �) and calculates the interpolatedvalues
� at the chosen new coordinates
� . The default(linear) interpolation is used.
intp.m
x = 0:8; y = sin(x);
xi = linspace(0,8,100);
yiL = interp(x,y,xi);yiC = interp(x,y,xi,’spline’);
plot(x,y,’.’,xi,yiL,yiC), legend(’Data’,’Linear in-terp’,’Spline interp’)
Day 2 – p.67/??
![Page 68: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/68.jpg)
Interpolation
Two-dimensional interpolation is performed by use of thefunction interp2.
� � � � � � � � � � � � � � � � � � �
(10)
takes the original data � (measured at points � � �) and cal-
culates the interpolated values
� at the chosen new co-
ordinates
� � � . The default (linear) interpolation is used.
� can be a row vector and
� a column vector defining the
new grid.
Day 2 – p.68/??
![Page 69: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/69.jpg)
Interpolation
� � � � � � � � � � � � � � � � � � � �� � � � � � �
(11)
Uses cubic spline interpolation rather than the defaultlinear.
� � � � � � � � � � � � �
(12)
expands � by
�
interpolates between every element, work-
ing recursively. The data are assumed to be equally
spaced in the x- and y-directions.
Day 2 – p.69/??
![Page 70: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/70.jpg)
Intp2D.m
clear
x = -2:2;y = [-2:2]’;z = (sin(y).*exp(-y.ˆ))*(sin(x).*exp(-xˆ2));
xi = linspace(-2,2,100);yi = linspace(-2,2,100)’;
ziL = interp2(x,y,z,xi,yi);
subplot(121), mesh(xi,yi,ziL)title(’Linear interpolation’)
ziC = interp2(x,y,z,xi,yi,’splnin’);subplot(1,2,2), mesh(xi,yi,ziC)title(’Cubic spline interpolation)
Day 2 – p.70/??
![Page 71: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/71.jpg)
Interpolation
Three-dimensional interpolation is performed by use ofthe function interp3.
� � � � � � � � � � � � � � � � � � � � � � �
(13)
takes the original data � (measured at points � � � � �) and
calculates the interpolated values
� at the chosen new
coordinates
� � � � � . The new grid
� � � � � can be ei-
ther three-dimensional matrices or vectors (in which case
� must be a column vector).
Day 2 – p.71/??
![Page 72: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/72.jpg)
Interpolation
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
(14)
Uses interpolation method specified in ’method’ (seehand-out) rather than the default linear.
� � � � � � � � � � � � �
(15)
expands � by
�
interpolates between every element,working recursively. The data are assumed to be equallyspaced in the x-, y- and z-directions.
� � � � � � � � � �� � �� � �� � � � � � � � � � � � � � � � � � � � �
�
(16)
N-dimensional interpolation
Day 2 – p.72/??
![Page 73: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/73.jpg)
Irregular data sets
For one dimensional data sets the data can be sortedbefore the interpolation is performed
�� � � �� � � � �
(17)
sorts the elements in vector � in ascending order andstores them in the vector
��.
� �� � � � � � �� � � � �
(18)
sorts the elements and also stores the indices in vector
�
.
Day 2 – p.73/??
![Page 74: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/74.jpg)
Irregular data sets
� �� � � � � � �� � � � �
(19)
�� � � � � �
(20)
uses the stored indices to rearrange the correspondingy-values. In the above example, the data � that were
sampled at (irregular) points � have been rearranged in the
vector
�� sampled at (ascending) points
��.
Day 2 – p.74/??
![Page 75: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/75.jpg)
Irregular data sets
For data sets in two or more dimensions it is morecomplicated to sort the sample points so that they areascending in every dimension. The sorting may need tobe done several times.For two-dimensional irregularly sampled data sets thefunction griddata may be used instead.
� � � � � � � � � � � � � � � � � � � � � � � � � � � � �
(21)
� � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � �
(22)
� � � � � � � � �
(23)
Day 2 – p.75/??
![Page 76: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/76.jpg)
irrdata.m
x = 4*rand(1,8)-2;y = 4*rand(8,1)-2;z = (sin(y).*exp(-yˆ2))*(sin(x).*exp(-xˆ2));
xi = linspace(-2,2,100);yi = linspace(-2,2,100)’;
ziL = interp2(x,y,z,xi,yi);
subplot(121), mesh(xi,yi,ziL)title(’Linear interpolation’)
ziC = interp2(x,y,z,xi,yi,’spline’);subplot(1,2,2), mesh(xi,yi,ziC)title(’Cubic spline interpolation)
Day 2 – p.76/??
![Page 77: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/77.jpg)
irrdata2.m
x = 4*rand(1,8)-2;y = 4*rand(8,1)-2;z = (sin(y).*exp(-yˆ2))*(sin(x).*exp(-xˆ2));
xi = linspace(-2,2,100);yi = linspace(-2,2,100)’;
ziL = griddata(x,y,z,xi,yi);
subplot(121), mesh(xi,yi,ziL)title(’Linear interpolation’)
ziC = griddata(x,y,z,xi,yi);subplot(1,2,2), mesh(xi,yi,ziC)title(’Matlab 4 interpolation)
Day 2 – p.77/??
![Page 78: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/78.jpg)
Irregular data set
� � � � � � � � � � � � � � � � � � � � � � � �
(24)
interpolates the data � measured at (irregularly spaced)points � � �. The new grid specified by
� � � � �
can be a row-and column vector. By default, linear interpolation isperformed.
� � � � � � � � � � � � � � � � � � � � � � � ��
� � � � � � �
(25)
Uses the chosen interpolation method.
Day 2 – p.78/??
![Page 79: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/79.jpg)
Statistics
Matlab has a special statistics toolbox with a number offunctions (type ’ help stats’ for complete list). There arealso several statistical functions included in the regularMatlab library (see handout).
Some statistical functions return a scalar number when ap-
plied to a vector. If applied to a matrix, a row vector con-
taining the results from each of the columns is instead re-
turned.
Day 2 – p.79/??
![Page 80: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/80.jpg)
stat1.m
clearclf
Level(8760,12) = 0; % presizes the matrix
for n = 1:12filenum = num2str(1989+n); % convert year to
% stringfilename = [’VIK_’,filenum,’.dat’]; % Append year to
% filenameA = dlmread(filename,’ ’,[1 0 8760 4]); % read the file
Level(:,n) = A(:,5);end
stdev = std(Level);plot(stdev)
Day 2 – p.80/??
![Page 81: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/81.jpg)
Statistics
Sometimes missing data points in a series are replaced
with NaN. No statistical functions will work on these sets,
since an operation involving NaN will always return NaN.
Try removing all points with NaN (use e.g. the isnan func-
tion) or use the special functions that are defined for such
series, for example nanmax, nanmean etc).
Day 2 – p.81/??
![Page 82: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/82.jpg)
Calculus and equation solving
We are now going to try different methods of integration,
derivation and root finding in Matlab. Besides the imme-
diate use of methods, the purpose is also to demonstrate
some of the programming tools and how to make the most
efficient use of Matlab (optimization).
Day 2 – p.82/??
![Page 83: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/83.jpg)
Analytical methods.
All common operations can be done on analytical objects,including factorization, derivation and integration.Matlabs analytical toolbox is built on Maple, and usesMaples commands etc. An symbolic object is defined inMatlab by use of the command ’sym’ or ’syms’.x = sym(’x’)
syms x y z
Day 2 – p.83/??
![Page 84: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/84.jpg)
demoan.m
clear
syms x y % defines x and y% as symbolic objects
f = cos(x)ˆ2 + xˆ3 % defines f(x)subplot(211), ezplot(f) % plots f(x) in top half
q = exp(-xˆ2-yˆ2)*sin(x*y) % defines g(x)subplot(212), ezsurf(g) % draws the surface in
% lower half
Day 2 – p.84/??
![Page 85: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/85.jpg)
Analytical integration
The function ’int’ integrates a function analytically. If noanalytical integral can be found, the input is returned.Usage:h = int(f)integrates the equation f with respect to thedependent variable
h = int(f,y)integrates the equation f with respect to y
example anin.m
Day 2 – p.85/??
![Page 86: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/86.jpg)
Analytical derivation
The function ’diff’ calculates the derivative of a functionanalytically.Usage:g = diff(f)g = diff(f,y) Takes the derivative with respect to y
Example ande.m
Day 2 – p.86/??
![Page 87: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/87.jpg)
Analytical root-finding
The function ’solve’ is used to find the root to the equation
� � � � � �
.Usage:a = solve(f) Solves f(x) = 0a = solve(’f(x)=3’) Solves f(x) = 3
Example anro.m
Day 2 – p.87/??
![Page 88: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/88.jpg)
Numerical integration and derivation
Matlab has a number of built-in functions for numerical
derivation and integration. The good thing with these is
that they are accelerated and execute faster. The bad thing
is that the code can not readily be viewed. In addition to
the built-in functions there are several ordinary m-files for
derivation and integration included in the Matlab library. A
list of built-in and library files is given as hand-out.
Day 2 – p.88/??
![Page 89: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/89.jpg)
The integral of a data set
Suppose we have sampled a signal
� � � �
at a time intervalof
� �
. A crude estimate of the time integral of the data setis then given by
��
� � � � � � ��
����
� � � � � �
(26)
There are different ways to perform the above summation
in Matlab.
Day 2 – p.89/??
![Page 90: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/90.jpg)
Method
1. For-loop
int = dt*A(1)for n = 2:N
int = dt*A(n) + int;end
2. Sum-function
int = dt*A(1)*sum(A);
3. Trapezoidal estimate
int = trapz(A);int = trapz(t,A)
Example numint.m
Day 2 – p.90/??
![Page 91: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/91.jpg)
Primitive function
1. By for-loop:
int(N) = 0;
for n = 1:Nint(n ) int(n-1)’dt*A(n);
end
2. Using cumsum:
int = dt*cumsum(A);
3. Trapezoidal estimate:
int = dt*cumtrapz(A);int = cumtrapz(t,A);
Related functions: prod(A), cumprod(A)
Example: numpr.m
Day 2 – p.91/??
![Page 92: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/92.jpg)
Better methods
The following methods integrates an analytical function(cn not be applied for a dataset).
int = quad(’fun’,a,b) Adaptive Simpson quadrature
int = quadl(’fun’,a,b) Adaptive lobatto quadrature
the function to be integrated is defined in the function file’fun’ (can be user-defined). The integral is calculatedfrom a to b.
Example: numpr2.m
Day 2 – p.92/??
![Page 93: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/93.jpg)
Numerical estimate of the derivative
An estimate of the time derivative of dataset� � � �
sampledat time interval
� �
is
� � � � � �
� � � � � � �
�
� � � �
� � (27)
The differentiation can be done with different methods inMatlab.1. For-loop:for n = 1:N
der(n) = (A(n+1) - A(n))/dt;endremember to presize der
2. Vector:der = (A(2:N) - A(1:N-1))/dt;
3. Built-in functionder = diff(A)/dt;
Day 2 – p.93/??
![Page 94: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/94.jpg)
The function ’diff’
diff(A,M) Performs the differencing M times recursivelydiff(B), where
�
is a matrix performs the differentiationalong each row
diff(C), where C an M-dimensional matrix performs the dif-
ferntiation along the first non-singleton dimension
Day 2 – p.94/??
![Page 95: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/95.jpg)
More dimensions
Gradient
� � �� �
� �� � �
� �� �
� � �� �
� �� � ��� � � �
� �� �
� � (28)
The gradient of a scalar field in N dimensions iscalculated with the function gradient, which is simply diffapplied along each of the dimensions.
� �� � ���
� � � � � � � � � � � �
Two dimensions
� �� � ��� � ���
� � � � � � � � � � � �
Three dimensions
� �� � ��� � ��� � � � � � � � � � � � � � � � � � � �
N dimensions
Example graddemo.m
Day 2 – p.95/??
![Page 96: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/96.jpg)
More dimensions
LaPlace operatorThe curvature of a scalar field in N dimensions iscalculated with the function del2, that uses a centeredfinite difference scheme in N dimensions.
� �� �� ��
� ��
�� ��
� ��
�� ��
� ��
� � � � �� ��
� �� (29)
L = del2(A) Calculates the LaPlacian in N dimensions
L = del2(A,X,Y,Z,. . . ,N) Uses the grid spacing defined by
(X,Y,Z,...,N)
Day 2 – p.96/??
![Page 97: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/97.jpg)
Numerical root-finding
The Matlab functions for numerical root finding requiresan initial guess of the root. If the initial guess has to beperformed by computer a logical test can be used. Thelogical operator any returns true if at least one element ofa logical matrix is true. A related logical operator is all,which is ’true’ only if all elements of the matrix are true.
if any(sign(fx(1:N-1))˜=sign(fx(2:N)));n0 = find(sign(fx(1:N-1))˜=sign(fx(2:N)));x0 = x(n0);
elseerror(’No initial guess could be found’);
end
Day 2 – p.97/??
![Page 98: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/98.jpg)
Afternoon exercise
A similar test can be done in two or more dimensions.The option of sign-change in the other directions has tobe included, and the initial guess will be in the form of amatrix (several indices will be returned).I = find(A) where A is a logical matrix of N dimensions,returns a row matrix I. To convert I to array indices (if Ahas two or more dimensions) use the function ind2sub.
[I,J,K,L,. . . ] = ind2sub(size(A),I)
Day 2 – p.98/??
![Page 99: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/99.jpg)
Matlab functions for root-finding
The functions fzero (one dimension) and fsolve (Ndimensions) uses different numerical methods to find theroots of equation f(x) = 0.Usage:fzero(’f’,x0) Finds the root of the function f(x) (can beuser-defined) using the initial guess x0.
fsolve(’f’,X0) Finds the root X (N-dimensional matrix) to
the function f(x) using the initial guess X0.
Day 2 – p.99/??
![Page 100: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/100.jpg)
Related functions
fminbind Finds an absolute minimum to a function in Ndimensions
fminsearch Finds a local minimum to a function in N dimen-
sions
Day 2 – p.100/??
![Page 101: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/101.jpg)
Logical tests with NaN
A logical test performed on NaN is always false! All thefollowing statements are false:NaN == NaN
-Inf < NaN
-Inf > NaN
On the other hand, ’not-equal’ is always true:NaN ˜= NaN
0 ˜= NaN
If there is a risk that your operations can return NaN thefunction isnan can be used instead.
isnan(NaN) returns true.
Day 2 – p.101/??
![Page 102: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/102.jpg)
Ordinary differential equations
Analytical solutions can be attempted with the functiondsolve.Usage:y = dsolve(’Equation’, ’BC1’, ’BC2’,....,’variable’)
S = dsolve(’Equation1’, ’Equation2’, ’BC1’,....)
Example odean.m
Day 2 – p.102/??
![Page 103: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/103.jpg)
Ordinary differential equations
A number of different ODE solvers are available in Matlabs
library. The different solvers are designed for various types
of ODEs (stiff or non-stiff etc) and different levels of accu-
racy. A complete list of the solvers can be found by typ-
ing ’help ode23’. The usage is equivalent and will here be
demonstrated with the solver ODE23 (a solver for non-stiff
ODEs, low order method).
Day 2 – p.103/??
![Page 104: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/104.jpg)
Manual for use of ODE23
The solution � at times
�
to the ODE is obtained by[t, y] = ode23(odefun,tspan,y0)
where odefun is a function file that describes the ODE.The time span is tspan = [t0 tend] and initial conditionsare y0 = y(t0). The file odefun should return the timederivative given the input
�
and �, i. e.
� �� �
� � � � � � � � � � �
(30)
Day 2 – p.104/??
![Page 105: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/105.jpg)
Manual for use of ODE23
If a system of differential equations is going to be solvedthen odefun should have the form
� �� � �
��
� � �� �
� � � � � � � � � � � � � �� �� � � � � � � �
� �
(31)
To solve higher-order differential equations, convert to a
system of first-order equations.
Day 2 – p.105/??
![Page 106: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/106.jpg)
Example: Bessel’s equation of zerothorder
Bessel’s equation can be converted to the following set offirst-order differential equations:
��
� � �
� �
� ��
� � �
� �
� � � �
(32)
� � � � �
� �
� �� � �
(33)
Day 2 – p.106/??
![Page 107: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/107.jpg)
bess.m
function dydt = bess(t,y)g = y(1);f = y(2);dgdt = -g/t-f;dfdt = g;
dydt = [dgdt; dfdt];
Day 2 – p.107/??
![Page 108: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/108.jpg)
odedemo.m
clearclf % clears the figure window
[t23,y23] = oded23(’bess’,[eps,10],[0;1]);% The function can not handle t = 0bess23 = y23(:,2);
[t45,y45] = ode45(’bess’,[eps,10],[0;1]);% use t = eps insteadbess45 = y45(:,2);
t = linspace(0,10,1000);plot(t,besselj(0,t),’b’,t23,bess23,’r’,t45,bess45,’g’)legend(’Analytical’,’ODE23’,’ODE45’)
Day 2 – p.108/??
![Page 109: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/109.jpg)
Curve fitting with arbitrary functions Solution to exercise 2b: Find the least-square fit of a data set to a linear combination of sin(t), sin(2t) and sin(3t). Set )3sin()2sin()sin()( 321 tatatatyF ++= . From the data set we have
)3sin()2sin()sin(.....
)3sin()2sin()sin()3sin()2sin()sin(
)3sin()2sin()sin(
200320022001200
3332313
2322212
1312111
tatatay
tatataytatatay
tatatay
++=
++=++=
++=
![Page 110: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/110.jpg)
or y = F*a (1)
where
=
200
3
2
1
yyyy
y
=
)3sin()3sin(
)2sin()2sin(
)sin()sin(
)3sin()2sin()sin()3sin()2sin()sin(
200
3
200
3
200
3
222
111
tt
tt
tt
tttttt
F,
=
3
2
1
ccc
a
We can not solve for a exactly (the system is overdetermined), but a least-square fit of eq. (1) can be found by left-division of y with F: a = F\y. Note that there is no warning message displayed!
![Page 111: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/111.jpg)
The Matlab code looks like this: t = xydata(1,:)'; y = xydata(2,:)'; F = [sin(t), sin(2*t), sin(3*t)]; a = F\y; yfit = a(1)*sin(t) + a(2)*sin(2*t) + a(3)*sin(3*t);
![Page 112: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/112.jpg)
Partial differential equations
In order to illustrate two techniques for PDE solving thediffusion (or heat) equation will be used:
� �� �
� � � � �(34)
For constant � an initial distribution
� � � � � �� ���� � �
�
spreads in all directions according to
� � � � �� �
��� � � �
���� � �
� �� � � � (35)
where
� �
� �� � �� � �� �
� � � is the distance to the origin.
Day 2 – p.109/??
![Page 113: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/113.jpg)
Explicit numerical scheme The field T at time t + ∆t is approximately given by
Tt
tTttT 2)()(∇≈
∆−∆+
κ , or
TttTttT 2)()( ∇∆+=∆+ κ . The function del2 calculates the LaPlacian:
del2(T) T2
41 ∇ 1 or 2 dimensions
del2(T) T2
61
∇ 3 dimensions
del2(T) TT
2
)dim(*21
∇ N dimensions
![Page 114: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/114.jpg)
Explicit scheme The Matlab code for the explicit scheme looks like this: T = T + dt*K*del2(T)*2*ndims(T); ndims(T) Number of (non-singleton) dimensions del2(T,dx,dy,dz,...) Grid spacing dx, dy etc del2(T,Xv,Yv,Zv,...) Grid defined by vectors Xp, Yp etc del2(T,Xm,Ym,Zm,...) Grid defined by matrices Xp, Yp etc Example: explic3.m
![Page 115: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/115.jpg)
Implicit numerical scheme
In an implicit scheme the space de rivative is calculatedat time
� � � �
. The temperature at this time is then thesolution to the linear equation system
� � � � � � � � �� � � � � �
(37)
where
� ��
������� � � �
�� � �
�� � � � �
�� �
�
�� � � � � �
� �
�� � � � �
���
(38)
is a tridiagonal NxN matrix and
� � � � ��� �
Example: implicit1.m Day 2 – p.111/??
![Page 116: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/116.jpg)
Implicit numerical scheme
There are several ways to solve this in Matlab. Thequickest method makes use of LU decomposition forsparse matrices,[L,U\] = lu(A);T = U\(L\T);
The time taken for this operation can be compared withthe slower Gaussian elimination,T = A\T;
or the even slower inverse matrix method,T = inv(A)*T;
Example: implicit2.m
Day 2 – p.112/??
![Page 117: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/117.jpg)
Implicit numerical scheme
The extension to several dimensions can be done in many
ways for the implicit scheme, for example by splitting the
operator and compute each direction independently.
Day 2 – p.113/??
![Page 118: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/118.jpg)
The PDE toolbox
The special toolbox for calculation of partial differential
equations includes a library with numerical schemes of dif-
ferent orders. There is also a set of aides for finite element
methods, with or without graphical user interface. The pro-
gram Femlab is very user-friendly and was developed from
this toolbox. For more information, go to the Partial Differ-
ential Equation Toolbox page in the Helpdesk.
Day 2 – p.114/??
![Page 119: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/119.jpg)
Day 3
Day 3 – p.115/??
![Page 120: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/120.jpg)
Visualizing
Today:
� Creating different types of illustrations
� Interactive editing
� Handle graphics
� Import and export of pictures
� Movies
Day 3 – p.116/??
![Page 121: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/121.jpg)
More than one figure
To create two or more plots, type ’figure’ in the command
window. A new figure window will open. To shift between
open figures, or create new ones with a specific number,
type ’figure(n)’. The plot commands that you issue will be
performed in the current window. One figure window can
also be subdivided into several parts. The command sub-
plot(m,n,p) divides the window into � � � plotting areas and
performs the plot command in the p’th area.
Day 3 – p.117/??
![Page 122: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/122.jpg)
Plot
One-dimensional data can be visualised with the plotcommand.
plot(t,f) plots f as a function of tplot(t,f,x,y) plots two graphs in the same windowplot(A) plots each column of A versus
their indexplot(t,f,’g:’,x,y,’rx’) changes the linetype and color
Type ’help plot’ for a complete list of availablelinetypes.
Example: plotex1.m
Day 3 – p.118/??
![Page 123: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/123.jpg)
Surf
A matrix can be visualized as a surface with thecommand surf.surf(z) Draws the surface z
versus the row- andcolumn indices
surf(x,y,z) Draws the surface versus x and ysurf(x,y,z,C) Uses the color map specified in C
Example: surfex1.m
Day 3 – p.119/??
![Page 124: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/124.jpg)
Contour
Another way to visualize a matrix is by drawing a contourplot.contour(z) Draws a contour plot
versus the row andcolumn index
contour(x, y,z) Contour plot versus x and ycontour(z,N) Draws N evenly spaced contour
linescontour(z,[z0, z1, z2, ...,zN])
Draws the contour linesz0, z1, z2 etc
contour(x,y,z,[z0 z0]) Draws a single contourline, z = z0.
To create a filled contourplot, use the functioncontourf.
Example: contex1.m
Day 3 – p.120/??
![Page 125: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/125.jpg)
Slice
One way to visualize three-dimensional data is bydrawing several (filled) contour plots in different planes.This is done by the function slice:
slice(x,y,z,V,Xp,Yp,Zp) draws contour plots of V in theplanes x = Xp, y = Yp and z = Zp.Several planes can be used.
slice(V,Np,Mp,Qp) draws contour plots of V versusits index.
Example: sliceex.m
Day 3 – p.121/??
![Page 126: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/126.jpg)
Patch
A three-dimensional data set can also be visualised bydrawing one of the isosurfaces. The function patchdisplays an isosurface. In order to find the surface thefunction isosurface can be used. The values at the edgesof the isosurface can be found by the function isocaps.
isosurface(X,Y,Z,T,T0) finds the isosurface T = T0isocaps(X,Y,Z,T,T0) finds the values of T at the
edge of the isosurfacepatch(surface,’property’,value);
draws the surface
Example: patchex.m
Day 3 – p.122/??
![Page 127: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/127.jpg)
Demonstration: Interactive editing offigures
Day 3 – p.123/??
![Page 128: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/128.jpg)
Interactive editing of figures
The changes that were made interactively can also bedone with written commands. There are two ways to dothis.
� Include the properties in the plot command
� Create a ’handle’ when the plot is drawn. The handlecan be used later on to change the plot properties.
Day 3 – p.124/??
![Page 129: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/129.jpg)
Setting properties with the plotcommand
All the parameters that can be edited from the plotwindow can also be adjusted directly when the plot isdrawn. This is done by including additional stringarguments in the plot command.
plot(x,y,’LineWidth’,2,’Color’,[0 0 1],’LineStyle’,’--’)
A color is specified by three numbers corresponding tothe RGB color values.
surf(x,y,z,’LineStyle’,’none’,’FaceColor’,’interp’)
Day 3 – p.125/??
![Page 130: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/130.jpg)
Examples
plotex2.msurfex2.mcontex2.m
produces plots with the same editions that were previously
made interactively.
Day 3 – p.126/??
![Page 131: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/131.jpg)
Example
If we want to remove the lines in a filled contour plot bytyping
contourf(x,y,z,’LineStyle’,’none’)
it does not work. This is an example of when it is good touse handle graphics.Example: contex3.m
Day 3 – p.127/??
![Page 132: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/132.jpg)
What is a handle?
A handle is simply a number. Its purpose is to help Matlab
keep track of the different plots, axes, figure windows etc
(’objects’). In the manual some of the handles are called
’parents’ and ’children’. This is a way to rank the different
objects - a figure window can not be created unless there is
a screen to create it in. The screen is then called the ’par-
ent’ to the figure and the screen handle is parent to the fig-
ure handle.
Day 3 – p.128/??
![Page 133: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/133.jpg)
Get hold of a handle
To find a handle, simply write a parameter name in frontof your plot command.Hl_xy = plot(x,y);
A handle called ’Hl_xy’ has been created. The handleidentifies the plot.
Hf_fig = figure(1)
A handle called ’Hf_fig’ identifying the figure window has
been created.
Day 3 – p.129/??
![Page 134: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/134.jpg)
Get hold of a handle
Ha_ax = axes
This way the handle to the object ’axes’ is created (not tobe confused with the command axis!). Axes is animportant object that is parent to all surfaces, lines etc inthe plot. The handle to the current axes object can alsobe obtained with the function gca.Ha_ax = gca
Day 3 – p.130/??
![Page 135: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/135.jpg)
Use the handle
With the handle it is eas y to make changes to the plot.The function ’set’ changes the handle properties:
set(Hl_xy,’LineStyle’,’:’)set(Hl_xy,’LineWidth’,4,’Color’,[0 1 0])
The function ’get’ can be used to obtain a list of all thehandle properties.get(Hl_xy)
displays a complete list of the properties of the object withhandle Hl_xyExample: hangr1.m
Day 3 – p.131/??
![Page 136: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/136.jpg)
The handle hierarchy
When handles are used to edit the plot it can be confusing
which properties belong to which object (i. e. which handle
should be used). It is then helpful to keep in mind how the
objects are related: A Figure window is parent to the axes.
The Axes object is parent to everything else that is added
in the plot (for example surfaces, lines and light-sources).
Day 3 – p.132/??
![Page 137: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/137.jpg)
Several handles
One plot command can create several objects. In thiscase a column vector of all the handles are created:Hl_peaks = plot(peaks);
returns a column matrix of 50 handles. The handleproperties can be adjusted one by one,
set(Hl_peaks(n),’LineWidth’, 2)
or all together
set(Hl_peaks,’LineWidth’, 2)
Day 3 – p.133/??
![Page 138: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/138.jpg)
The exception that confirms the rule
The functions ’contour’ and ’contourf’ are special in thatthey have an optional function output - the coordinates ofthe calculated contours. The commandc = contour(z)
does not return a handle, but a 2*N matrix containing thecontour coordinates. To obtain the handle of the contourplot two arguments must be specified:[c, Hl_cont] = contour(z)
returns the handles of the created lines in the columnvector Hl_cont.Example: contex4.m
Day 3 – p.134/??
![Page 139: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/139.jpg)
The handle properties
The properties of an object can also be stored. This canbe useful if a plot is edited ’by hand’ and the new settingsare to be applied to subsequent figures. The commandProp_H = get(Hl_cont)
stores the properties of the object in Prop_H.
Day 3 – p.135/??
![Page 140: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/140.jpg)
Structures
The parameter Prop_H is a new type of variable - a’structure’. The values stored in it are not identified byindices (as in matrices) but by the value name. Forexample,Prop H.Colorreturns the line color value.Prop H.LineWidthreturns the line width.Example prop1.m
Day 3 – p.136/??
![Page 141: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/141.jpg)
Using the handle
By use of the handles, it is possible to construct a graph,make changes interactively and then save the propertiesfor later use. This can be achieved by use of two scripts.Run the first script to create the object, then run thesecond script after the interactive editing has been doneto store the properties.Example 1: hangr11.m + hangr12.mExample 2: hangr21.m + hangr22.m
Day 3 – p.137/??
![Page 142: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/142.jpg)
Using the handle
The next time you want to use the settings, the handleproperties simply has to be loaded into the workspaceand applied:
Ht_new = title(’New plot’);set(Ht_new,Oldprop)
Hs_new = surf(Newdata);set(Hs_new,Oldprop)
Example: hangr13.m, hangr23.m
Day 3 – p.138/??
![Page 143: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/143.jpg)
List the properties
To get a list of all the ’settable’ properties of a handle, type
set(Hx_obj) lists all the properties that arepossible to modify
get(Hx_obj) displays a complete list of all theobject properties
Day 3 – p.139/??
![Page 144: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/144.jpg)
Export and import of graphics
A plot can be exported in a number of different picture for-
mats. This can be done either from the File menu (chose
’export’) or by typing in the command window. The options
available from the File menu are not as extensive as from
the Command window.
Day 3 – p.140/??
![Page 145: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/145.jpg)
Demonstration: Export from themenu
Day 3 – p.141/??
![Page 146: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/146.jpg)
Typing the export command
The command ’print’ is used to export a figure fromMatlab.Usage:
� print �� � � � � � � � �
� � � � � � � � � � � � filename
� �� � � � � � � �
Specifies which figure to print. If left out, the currentfigure is printed
� �� � � �
Specifies format (a complete list of available formatsis given as hand-out)
Day 3 – p.142/??
![Page 147: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/147.jpg)
Typing the export command
The device can be:
� �� � � Black-and-white post-script
� �� � � �
Color post-script
� �� � �
�
Post-script level 2
� �� � � � Jpeg image
� �� � � � �
Tiff bitmap
Day 3 – p.143/??
![Page 148: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/148.jpg)
Typing the export command
� � � � � � � � � optional argument specifying additionalproperties of the picture:
� � � � � � �
Append (not overwrite) the graph toPostScript file
� �� � � �
Add TIFF preview
� � � � �� Use CMYK colors instead of RGB
� � � � � � Resolution n dpi
� � � � � ��
Rendering for printing to be done inOpenGL mode
Day 3 – p.144/??
![Page 149: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/149.jpg)
Typing the export command
For example, the command
�� � � � �
� ��
� � � � �� � � �
� � � � � � � � � �exports the plot in figure 2 as a jpeg image with resolution600 dpi and a tiff preview.For a complete list of available options and devices, type’help print’ in the command window.
Example: expfig.m
Day 3 – p.145/??
![Page 150: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/150.jpg)
Importing pictures
Bitmap image files can be imported into Matlab with thefunction imread. The imported picture is then representedas a matrix with each pixel being an element in the matrix.Color bitmaps are represented as an
� � � �
matrix,where the 3 values of each element is the
� � �
color.Grayscale i mages are imported as an
� � matrix, withthe value of each element corresponding to the hue.
A = imread(’Filename’, ’type’)
The imported images can be displayed with the function
image (color) or imagesc (grayscale).
Day 3 – p.146/??
![Page 151: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/151.jpg)
Example
A = imread(’Dilbert.tif’,’tiff’);image(A)A = imread(’Dilbertbw.tif’,’tiff’)imagesc(A)
The function ’imwrite’ can be used to export image matri-ces as bitmaps.
imwrite(A,’filename’, ’type’)
Example: dilbert.m
Day 3 – p.147/??
![Page 152: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/152.jpg)
Movies
A dataset can be displayed as a movie simply by drawing
the set at subsequent times. For larger datasets or com-
plicated plots Matlab can not create the figures sufficiently
fast, and it is best to make the images in advance. The
individual pictures can be saved in any of the file formats
supported by Matlab (not GIF!), and also the movie can be
exported as an AVI movie.
Day 3 – p.148/??
![Page 153: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/153.jpg)
The easy way
The following script draws a contour plot of the diffusionequation:
diffusion.m
In order to make the movie slower the ’pause’ commandcan be used. pause(n) makes a pause of n secondsbefore continuing executing the command:
diffusion2.m
Day 3 – p.149/??
![Page 154: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/154.jpg)
The difficult way
The following script displays a set of images as a movie:
movie(M)
Example: filmspel.m
Day 3 – p.150/??
![Page 155: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/155.jpg)
Creating a set of images
The images used as input in the function ’movie’ shouldbe in the form of
� � � �
matrices, as obtained when animage is imported with the imread command. To makesuch a matrix representation of the current figure thecommand getframe can be used:A = getframe(n);
The command stores the figure with handle n as astructure A. The structure A has two fields:
A.cdata stores the image matrixA.colormap stores the colormap
The image matrix can be extracted from A with thecommandImgmatr = A.cdata;
Day 3 – p.151/??
![Page 156: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/156.jpg)
Input to the movie
The argument M in the command movie(M) is a set ofstructures. Each individual structure is an image, and’movie’ circles through the images dis playing them oneat a time. The set of structures can be obtained by awhile-loop,while t < tmax
T = T+dt*K*del2(T);figure(1), contourf(T);A = getframe(1);M(n) = A;t = t + dt;n = n+1;
end
Day 3 – p.152/??
![Page 157: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/157.jpg)
Input to the movie
However, as is the case with matrices, the resizing of astructure takes a lot of unnecessary CPU-time. Thecommand ’moviein’ creates a set of structures before theloop,M = moviein(N) creates space for
�images in
Example: internvag.m
Day 3 – p.153/??
![Page 158: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/158.jpg)
Playing the movie
Additional arguments can be included in the � � � �
command.
movie(M, n, m) Plays the movie n times,displaying m images persecond
movie(M, -n, m) Plays the movie forwardsand backwards n times
Warning:The Ctrl+C command does not interrupt Matlab in themiddle of a command.
A movie running from the ’movie’ command can therefor
not be stopped.
Day 3 – p.154/??
![Page 159: Matlab Course - folk.uio.nofolk.uio.no/gunnarw/MATLAB_KURS/STUDENTS/GEO... · Matlab Course Anna Kristine Wahlin˚ ... Introduction to Matlab 6 by Etter, Kuncicky and Hull. Prentice](https://reader030.vdocument.in/reader030/viewer/2022041022/5ed33fdd574e6b67970eba99/html5/thumbnails/159.jpg)
Converting movie to AVI format
To convert the movie M to an AVI-movie, use the function’movie2avi’:movie2avi(M, ’filename’)saves the movie as filename.avi. It is also possible to
create AVI-movies from separate images with the func-
tions ’avifile’ and ’addframe’.
Day 3 – p.155/??