Successfully reported this slideshow.
Upcoming SlideShare
×

# Introduction to MATLAB

625 views

Published on

Introduction to MATLAB

Published in: Education
• Full Name
Comment goes here.

Are you sure you want to Yes No
• How I Cured My Uterine Fibroids? Ex Sufferer reveals secret system, For Lasting Uterine Fibroids Freedom... ★★★ https://bit.ly/2ONPXxg

Are you sure you want to  Yes  No
• Ex-Student reveals the number one secret to scoring an A* in GCSE/IGCSE Maths, click here to find out more ◆◆◆ http://ishbv.com/jeevan91/pdf

Are you sure you want to  Yes  No
• Download The Complete Lean Belly Breakthrough Program with Special Discount. ◆◆◆ http://scamcb.com/bkfitness3/pdf

Are you sure you want to  Yes  No
• Download The Complete Lean Belly Breakthrough Program with Special Discount. ■■■ http://scamcb.com/bkfitness3/pdf

Are you sure you want to  Yes  No

### Introduction to MATLAB

1. 1. Zen and the Art of MatLab DAMIAN GORDON
2. 2. Introduction to MatLab  MatLab is an interactive, matrix-based system for numeric computation and visualisation  MATrix LABoratory  Used in image processing, image synthesis, engineering simulation, etc.
3. 3. References  “Mastering MatLab” Duane Hanselman, Bruce Littlefield  “The MatLab Primer” http://www.fi.uib.no/Fysisk/Teori/KU RS/WRK/mat/mat.html  “The MatLab FAQ” http://www.isr.umd.edu/~austin/en ce202.d/matlab-faq.html
4. 4. Printed Circuit Board
5. 5. Specific Bond Selected
6. 6. Bond Shape Estimated
7. 7. MATLAB Command Window To get started, type one of these: helpwin, helpdesk, or demo. For product information, type tour or visit www.mathworks.com. » » help HELP topics:
8. 8. Creating Variables >> varname = 12 varname = 12 >> SS = 56; N = 4; Tot_Num = SS + N Tot_Num = 60
9. 9. Operations + Addition - Subtraction * Multiplication ^ Power Division / Division • Add vars • Subtract vars Multiplication • Raise to the power • Divide vars (A div B) • Divide vars (B div A)
10. 10. Creating Complex Numbers >> 3 + 2i >> sqrt(9) + sin(0.5)*j ans = 3.0000 + 0.4794i Num = sqrt(9) + sin(0.5)*j real(Num) imag(Num)
11. 11. Entering Matrices (1) >> A = [1 2 3; 4 5 6; 7 8 9] OR >> A = [ 1 2 3 4 5 6 7 8 9 ]
12. 12. Entering Matrices (2)  To create an NxM zero-filled matrix >> zeros(N,M)  To create a NxN zero-filled matrix >> zeros(N)  To create an NxM one-filled matrix >> ones(N,M)  To create a NxN one-filled matrix >> ones(N)
13. 13. Entering Matrices (3)  To create an NxM randomly-filled matrix (which is uniformly distributed) >> rand(N,M)  To create an NxM randomly-filled matrix (which is normally distributed) >> randn(N,M)
14. 14. Complex Matrices  To enter a complex matrix, you may do it in one of two ways : >> A = [1 2; 3 4] + i*[5 6;7 8] OR >> A = [1+5i 2+6i; 3+7i 4+8i]
15. 15. MATLAB Command Window » who Your variables are: a b c » whos Name Size Bytes Class a 8x8 512 double array b 9x9 648 double array c 9x9 648 double array Grand total is 226 elements using 1808 bytes
16. 16. Matrix Addition » A = [ 1 1 1 ; 2 2 2 ; 3 3 3] » B = [3 3 3 ; 4 4 4 ; 5 5 5 ] » A + B ans = 4 4 4 6 6 6 8 8 8
17. 17. Matrix Subtraction » A = [ 1 1 1 ; 2 2 2 ; 3 3 3] » B = [3 3 3 ; 4 4 4 ; 5 5 5 ] » B - A ans = 2 2 2 2 2 2 2 2 2
18. 18. Matrix Multiplication » A = [ 1 1 1 ; 2 2 2 ; 3 3 3] » B = [3 3 3 ; 4 4 4 ; 5 5 5 ] » A * B ans = 12 12 12 24 24 24 36 36 36
19. 19. Matrix - Power » A ^ 2 ans = 6 6 6 12 12 12 18 18 18 » A ^ 3 ans = 36 36 36 72 72 72 108 108 108
20. 20. Matrix Transpose A = 1 1 1 2 2 2 3 3 3 » A' ans = 1 2 3 1 2 3 1 2 3
21. 21. Matrix Division Left Division x = AB (is A*x=B) >> A = rand(4) >> B = rand(4) >> C = A B => A * C = B Right Division / x=A/B (is x*A=B) >> A = rand(4) >> B = rand(4) >> C = A / B => C * A = B
22. 22. Matrix Operations + Addition - Subtraction * Multiplication ^ Power ‘ Conjugate Transpose Left Division / Right Division • Add matrices • Subtract matrices Matrix Multiplication • Raise to the power • Get transpose • x = AB (is A*x=B) • x=A/B (is x*A=B)
23. 23. MatLab Operators DAMIAN GORDON
24. 24. Getting to Matlab
25. 25. Magic Matrix MAGIC Magic square. MAGIC(N) is an N-by-N matrix constructed from the integers 1 through N^2 with equal row, column, and diagonal sums. Produces valid magic squares for N = 1,3,4,5,...
26. 26. Identity Function >> eye (4) ans = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1
27. 27. Upper Triangle Matrix » a = ones(5) a = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 » triu(a) ans = 1 1 1 1 1 0 1 1 1 1 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1
28. 28. Lower Triangle Matrix » a = ones(5) a = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 » tril(a) ans = 1 0 0 0 0 1 1 0 0 0 1 1 1 0 0 1 1 1 1 0 1 1 1 1 1
29. 29. Hilbert Matrix » hilb(4) ans = 1.0000 0.5000 0.3333 0.2500 0.5000 0.3333 0.2500 0.2000 0.3333 0.2500 0.2000 0.1667 0.2500 0.2000 0.1667 0.1429
30. 30. Inverse Hilbert Matrix » invhilb(4) ans = 16 -120 240 -140 -120 1200 -2700 1680 240 -2700 6480 -4200 -140 1680 -4200 2800
31. 31. Toeplitz matrix. TOEPLITZ TOEPLITZ(C,R) is a non-symmetric Toeplitz matrix having C as its first column and R as its first row. TOEPLITZ(R) is a symmetric (or Hermitian) Toeplitz matrix. -> See also HANKEL
32. 32. Summary of Functions • magic • eye(4) • triu(4) • tril(4) • hilb(4) • invhilb(4) • toeplitz(4) - magic matrix - identity matrix - upper triangle - lower triangle - hilbert matrix - Inverse Hilbert matrix - non-symmetric Toeplitz matrix
33. 33. Dot Operator  A = magic(4); b=ones(4);  A * B  A.*B  the dot operator performs element-by-element operations, for “*”, “” and “/”
34. 34. Concatenation  To create a large matrix from a group of smaller ones  try  A = magic(3)  B = [ A, zeros(3,2) ; zeros(2,3), eye(2)]  C = [A A+32 ; A+48 A+16]  Try some of your own !!
35. 35. Subscripts  Row i and Column j of matrix A is denoted by A(i,j)  A = Magic(4)  try  A(1,4) + A(2,4) + A(3,4) + A(4,4)  try  A(4,5)
36. 36. The Colon Operator (1)  This is one MatLab’s most important operators  1:10 means the vector  1 2 3 4 5 6 7 8 9 10  100:-7:50  100 93 86 79 72 65 58 51  0:pi/4:pi  0 0.7854 1.5708 2.3562 3.1416
37. 37. The Colon Operator (2)  The first K elements in the jth column is  A(1:K, j)  Sum(A(1:4, 4)) is the sum of the 4th column or  Sum(A(:, 4)) means the same
38. 38. Deleting Rows and Columns (1) • Create a temporary matrix X • X=A; • X(:, 2) = [] • Deleting a single element won’t result in a matrix, so the following will return an error • X(1,2) = []
39. 39. Deleting Rows and Columns (2) • However, using a single subscript, you can delete – a single element – sequence of elements So X(2:2:10) = [] gives • x = 16 9 2 7 13 12 1
40. 40. The ‘FIND’ Command (1) >> x = -3:3 x = -3 -2 -1 0 1 2 3 K = find(abs(x) > 1) K = 1 2 6 7
41. 41. The ‘FIND’ Command (2) A = [ 1 2 3 ; 4 5 6 ; 7 8 9] [i, j] = find (A > 5) i = 3 3 2 3 j = 1 2 3 3
42. 42. Special Variables • ans • pi • eps • flops • inf • NaN • i,j • why - default name for results - pi - “help eps” - count floating point ops - Infinity, e.g. 1/0 - Not a number, e.g. 0/0 - root minus one - why not ?
43. 43. LOGO Command
44. 44. The ‘PLOT’ Command (1) >> X = linspace(0, 2*pi, 30); >> Y = sin(X); >> plot(X,Y) >> Z = cos(X); >> plot(X,Y,X,Z);
45. 45. The ‘PLOT’ Command (2) >> W = [Y ; Z] >> plot (X,W) Rotate by 90 degrees >> plot(W,X)
46. 46. PLOT Options >> plot(X,Y,’g:’) >> plot(X,Y,’r-’) >> plot(X,Y,’ko’) >> plot(X,Y,’g:’,X,Z,’r-’,X,Y,’wo’,X,Z,’c+’);
47. 47. PLOT Options >> grid on >> grid off >> xlabel(‘this is the x axis’); >> ylabel(‘this is the y axis’); >> title(‘Title of Graph’); >> text(2.5, 0.7, ’sin(x)’); >> legend(‘sin(x)’, ‘cos(x)’)
48. 48. SUBPLOT Command  Subplot(m,n,p)  creates a m-by-n matrix in and plots in the pth plane. subplot(2,2,1) plot(X,Y) subplot(2,2,2) plot(X,Z) subplot(2,2,3) plot( X,Y,X,Z) subplot(2,2,4) plot(W,X)
49. 49. Specialised matrices • compan • gallery • hadamard • hankel • pascal • rosser • vander • wilkinson • Companion matrix • Higham test matrices • Hadamard matrix • Hankel matrix • Pascal matrix. • Classic symmetric eigenvalue test problem • Vandermonde matrix • Wilkinson's eigenvalue test matrix
50. 50. Polynomials Polynomials are represented as row vectors with its coefficients in descending order, e.g. X4 - 12X3 + 0X2 +25X + 116 p = [1 -12 0 25 116]
51. 51. Polynomials The roots of a polynomial are found as follows r = roots(p) roots are represented as a column vector
52. 52. Polynomials Generating a polynomial from its roots polyans = poly(r) includes imaginary bits due to rounding mypolyans = real(polyans)
53. 53. Polynomial Addition/Sub  a = [1 2 3 4]  b = [1 4 9 16]  c = a + b  d = b - a
54. 54. Polynomial Addition/Sub  What if two polynomials of different order ? X3 + 2X2 +3X + 4 X6 + 6X5 + 20X4 - 52X3 + 81X2 +96X + 84  a = [1 2 3 4]  e = [1 6 20 52 81 96 84]  f = e + [0 0 0 a] or f = e + [zeros(1,3) a]
55. 55. Polynomial Multiplication  a = [1 2 3 4]  b = [1 4 9 16] Perform the convolution of two arrays !  g = conv(a,b) g = 1 6 20 50 75 84 64
56. 56. Polynomial Division  a = [1 2 3 4]  g = [1 6 20 50 75 84 64] Perform the deconvolution of two arrays ! [q,r] = deconv(g, a) q = {quotient} 1 4 9 16 r = {remainder} 0 0 0 0 0 0 0 0
57. 57. Polynomial Differentiation  f = [1 6 20 48 69 72 44]  h = polyder(f) h = 6 30 80 144 138 72
58. 58. Polynomial Evaluation x = linspace(-1,3) p = [1 4 -7 -10] v = polyval(p,x) plot (x,v), title(‘Graph of P’)
59. 59. Rational Polynomials  Rational polynomials, seen in Fourier, Laplace and Z transforms  We represent them by their numerator and denominator polynomials  we can use residue to perform a partial fraction expansion  We can use polyder with two inputs to differentiate rational polynomials
60. 60. Data Analysis Functions (1)  corrcoef(x)  cov(x)  cplxpair(x)  cross(x,y)  cumprod(x)  cumsum(x)  del2(A)  diff(x)  dot(x,y)  gradient(Z, dx, dy)  Correlation coefficients  Covariance matrix  complex conjugate pairs  vector cross product  cumulative prod of cols  cumulative sum of cols  five-point discrete Laplacian  diff between elements  vector dot product  approximate gradient
61. 61. Data Analysis Functions (2)  histogram(x)  max(x), max(x,y)  mean(x)  median(x)  min(x), min(x,y)  prod(x)  sort(x)  std(x)  subspace(A,B)  sum(x)  Histogram or bar chart  max component  mean of cols  median of cols  minimum component  product of elems in col  sort cols (ascending)  standard dev of cols  angle between subspaces  sum of elems per col
62. 62. Symbolic Math Toolbox
63. 63. Symbolic Expressions  ‘1/(2*x^n)’  cos(x^2) - sin(x^2)  M = sym(‘[a , b ; c , d]’)  f = int(‘x^3 / sqrt(1 - x)’, ‘a’, ‘b’)
64. 64. Symbolic Expressions diff(‘cos(x)’) ans = -sin(x) det(M) ans = a*d - b * c
65. 65. Symbolic Functions  numden(m) - num & denom of polynomial  symadd(f,g) - add symbolic polynomials  symsub(f,g) - sub symbolic polynomials  symmul(f,g) - mult symbolic polynomials  symdiv(f,g) - div symbolic polynomials  sympow(f,’3*x’) - raise f^3
66. 66. Advanced Operations  f = ‘1/(1+x^2)’  g = ‘sin(x)’ compose(f,g) % f(g(x)) ans= 1/(1+sin(x)^2)
67. 67. Advanced Operations • finverse(x^2) ans = x^(1/2) • symsum(‘(2*n - 1) ^ 2’, 1, ‘n’) ans = 11/3*n + 8/3-4*(n+1)^2 + 4/3*(n+1)^3
68. 68. Symbolic Differentiation f = ‘a*x^3 + x^2 + b*x - c’ diff(f) % by default wrt x ans = 3*a^2 + 2*x + b diff(f, ‘a’) % wrt a ans = x^3 diff(f,’a’,2) % double diff wrt a ans = 0
69. 69. Symbolic Integration f = sin(s+2*x) int(f) ans = -1/2*cos(s+2*x) int(f,’s’) ans = -cos(s+2*x) int(f, ‘s’, pi/2,pi) ans= -cos(s)
70. 70. Comments &Punctuation (1) • All text after a percentage sign (%) is ignored >> % this is a comment • Multiple commands can be placed on one line separated by commas (,) >> A = magic(4), B = ones(4), C = eye(4)
71. 71. Comments &Punctuation (2) • A semicolon may be also used, either after a single command or multiple commands >> A = magic(4); B = ones(4); C = eye(4); • Ellipses (…) indicate a statement is continued on the next line A = B/… C
72. 72. SAVE Command (1) >> save • Store all the variables in binary format in a file called matlab.mat >> save fred • Store all the variables in binary format in a file called fred.mat • >> save a b d fred • Store the variables a, b and d in fred.mat
73. 73. SAVE Command (2) >> save a b d fred -ascii  Stores the variables a, b and d in a file called fred.mat in 8-bit ascii format >> save a b d fred -ascii -double  Stores the variables a, b and d in a file called fred.mat in 16-bit ascii format
74. 74. Load Command • Create a text file called mymatrix.dat with – 16.0 3.0 2.0 13.0 – 5.0 10.0 11.0 8.0 – 9.0 6.0 7.0 12.0 – 4.0 15.0 14.0 1.0 • “load mymatrix.dat”, create variable mymatrix
75. 75. M-Files • To store your own MatLab commands in a file, create it as a text file and save it with a name that ends with “.m” • So mymatrix.m A = [… 16.0 3.0 2.0 13.0 5.0 10.0 11.0 8.0 9.0 6.0 7.0 12.0 4.0 15.0 14.0 1.0]; • type mymatrix
76. 76. IF Condition if condition {commands} end If x = 2 output = ‘x is even’ end
77. 77. WHILE Loop while condition {commands} end X = 10; count = 0; while x > 2 x = x / 2; count = count + 1; end
78. 78. FOR Loop for x=array {commands} end for n = 1:10 x(n) = sin(n); end A = zeros(5,5); % prealloc for n = 1:5 for m = 5:-1:1 A(n,m) = n^2 + m^2; end disp(n) end
79. 79. Creating a function function a = gcd(a,b) % GCD Greatest common divisor % gcd(a,b) is the greatest common divisor of % the integers a and b, not both zero. a = round(abs(a)); b = round(abs(b)); if a == 0 & b == 0 error('The gcd is not defined when both numbers are zero') else while b ~= 0 r = rem(a,b); a = b; b = r; end end
80. 80. Quick Exercise (!)  Consider Polynomial Addition again : how would you write a program that takes in two polynomials and irrespective of their sizes it adds the polynomials together ? Given that the function length(A) returns the length of a vector. Answers on a postcard to : dgordon@maths.kst.dit.ie oh, and while you’re here anyhow, if you have a browser open, please go to the following sites : http://www.the hungersite.com http://www.hitsagainsthunger.com
81. 81. Creating Programs Title : Program.m function out = program(inputs) % PROGRAM <code>
82. 82. Know Thyself  Where am I ?  pwd  Get me onto the hard disk  cd C:  Where am I now ?  pwd  Get me to where I know  cd ..
83. 83. Quick Answer (!) function c = mypoly(a,b) % MYPOLY Add two polynomials of variable lengths % mypoly(a,b) add the polynomial A to the polynomial % B, even if they are of different length % % Author: Damian Gordon % Date : 3/5/2001 % Mod'd : x/x/2001 % c = [zeros(1,length(b) - length(a)) a] + [zeros(1, length(a) - length(b)) b];
84. 84. Recursion function b = bart(a) %BART The Bart Simpson program writes on the blackboard % program, Bart writes the message a few times % and then goes home to see the Simpsons if a == 1 disp('I will not....'); else disp('I will not skateboard in the halls'); bart(a - 1); end
85. 85. Curve Fitting  What is the best fit ?  In this case least squares curve fit  What curve should be used ?  It depends...
86. 86. POLYFIT : Curve Fitting  polyfit(x,y,n) - fit a polynomial  x,y - data points describing the curve  n - polynomial order  n = 1 -- linear regression  n = 2 -- quadratic regression
87. 87. Curve Fitting Example x = [0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1]; y = [-.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2]; polyfit(x,y,n)  n = 1 p = 10.3185 1.4400  n = 2 p = -9.8108 20.1293 -0.0317 y = -9.8108x2 + 20.1293x - 0.0317
88. 88. Curve Fitting Example xi = linspace(0,1,100); z = polyval(p,xi) plot(x,y,'o',x,y,xi,z,':');
89. 89. Interpolation - 1D  t = interp1(x,y,.75) t = 9.5200 also  interp1(x,y,.75,’spline’)  interp1(x,y,.75,’cubic’)
90. 90. Interpolation - 2D  interp2(x,y,Z,xi,yi,TYPE) TYPE = 'nearest' - nearest neighbor interpolation 'linear' - bilinear interpolation 'cubic' - bicubic interpolation 'spline' - spline interpolation
91. 91. Fourier Functions  fft  fft2  ifft  ifft2  filter  filter2  fftshift  Fast fourier transform  2-D fft  Inverse fft  2-D Inverse fft  Discrete time filter  2-D discrete tf  shift FFT results so -ve freqs appear first
92. 92. Tensors  See ‘Programs’  ‘Tensors’  ‘Tensors.html’
93. 93. 3D Graphics T = 0:pi/50:10*pi; plot3(sin(t), cos(t), t);
94. 94. 3D Graphics title('Helix'), xlabel('sin(t)'), ylabel('cos(t)'), zlabel('t') grid
95. 95. 3D Graphics  Rotate view by elevation and azimuth view(az, el); view(-37.5, 60);