A brief introduction to Matlab

advertisement
Matlab for Scientific Programming
A Brief Introduction
Mark Levene
Follow the links to learn more!
Many features will be demonstrated
What can we achieve in 3 hours?
• Demonstration of why you may consider to
use Matlab and for what types of tasks.
• Tips on getting you started as a Matlab
programmer.
• You will need to practice Malab at home,
and/or when doing a project for which
Matlab may be suitable.
Matlab Resources
There are many!!
• Matlab tutorials and learning resources
• Attaway, MATLAB A Practical Introduction to
Programming and Problem Solving, Second Edition,
Elsevier, 2012 (Introductory).
• Banches, Text Mining with Matlab, Springer, 2012
(Intermediate).
• Martinez et al., Exploratory Data Analysis with Matlab,
Second Edition, CRC Press, 2011(Advanced).
• Matlab claims over 1 million users world wide in 2012!!
• There are many Matlab books.
• Also see Matlab documentation centre.
Why Matlab?
Introductory Example
• Example5_2 from Martinez – load iris
• 3 classes of Iris to be distinguished by
– sepal length, sepal width
– petal length, petal width
• Look at the “data”
• Briefly discuss the kmeans algorithm for
grouping data into k groups (here k=3);
demonstrate help in Matlab
What can you do in Matlab?
• The normal things you can do in any other
programming languages, but is interpreted and
not strict in its typing to allow quick prototyping.
• Has many built-in features to handle matrices,
maths & stats, data analysis and plotting.
• Has a wide range of toolboxes such as curve
fitting, neural networks, bioinformatics, symbolic
maths and finance.
• Although Matlab is proprietary there are many
open source toolboxes; see Matlab central.
A simple function in Matlab
function area = conearea(radius, height)
area = pi/3 * radius^2 * height;
end
conearea(4,6.1)  ans = 102.2065
• Matlab has the usual control flow that
other languages have – use help when
needed !!
Vectorised code
• Chapter 5 in Attaway
for i=1:10 v(i) = i; end %create a vector
v = 1:1:10 %start=1, increment=1,end=10
for i=1:10 w(i) = w(i)^2; end %standard loop
w=w.^2; %vectorised code
• Can use any other vector operations!
w=log(v); %a vector can be an argument
• Can query a vector using find:
find(w>5); %returns indices satisfying condition
Matrices and Linear Algebra
• Chapter 12 in Attaway
• Can also vectorise (try it out yourselves!)
m = rand(3,3); %create a random 3x3
matrix
• Matrix operations work as expected!
n = m.*m %Matrix multiplication
• You will need to revise your linear algebra
to make use of these Matlab features.
Example SVD and PCA
(Eigenvector decomposition)
• For example Singular Value Decomposition
(SVD) – Look this up for maths details,
• SVD has applications in many areas including
Information Retrieval is easy in Matlab.
m = rand(100,10); svd(m);
• Principal Components Analysis (PCA) is a
special case of SVD measuring the directions
along which the variance is maximised.
load filteredyeastdata;
mapcaplot(yeastvalues, genes);
Basic Statistics
• Chapter 13 in Attaway
x= [8 9 3; 10 2 3; 6 10 9];
mean(x)  ans = 8 7 5
var(x)  ans = 4 19 12
std(x)  ans = 2.0000 4.3589 3.4641
• y = [9 10 10 9 8 7 3 10 9 8 5 10];
mode(y)  ans = 10
median(y)  ans = 9
• There is much more in the statistics toolbox
Curve fitting
•
•
•
•
•
•
•
Example7_3 in Martinez
Demonstrate cftool with (x,x) and (x,y)
Example 9_2 in Martinez
Demonstrate histogram
Demonstrate cftool with (xk,nuk)
normfit = [33,40,42,41,39,32];
linfit = [2,44,49,61,82,95]
Maths
• Chapter 15 in Attaway
• Symbolic maths
syms x y
f = x^2 + y^2 + 2*x*y
simplify(f)  ans = (x + y)^2
expand(ans)  f
ezplot(x^2+2*x+2) % plot the function
Solving equations
solve(2*x^2+x-6)  ans = -2 3/2
syms x a b c
solve(a*x^2+b*x+c)  ans =
-(b + (b^2 - 4*a*c)^(1/2))/(2*a)
-(b - (b^2 - 4*a*c)^(1/2))/(2*a)
• Can try and solve more complex equations
solve(exp(x)-3)  ans = log(3)
Calculus
syms x
diff(x^3,x)  ans = 3*x^2 %differentiation
int(3*x^2)  ans = x^3 %integration
• Can do much more, including solving differential
equations.
• Do not worry about the Maths as such, as in
Matlab we pick up the tools as and when we
need them.
Summary
• Matlab provides and easy-to-use, state-of-theart environment for scientific computing.
• There are a wide variety of toolboxes for
different applications, many of which are open
source.
• Matlab may not always be the most efficient
solution but it is great for quick prototyping.
• Matlab is not designed for general purpose
programming, although it is a complete
language.
Download