Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Introduction to MATLAB

625 views

Published on

Introduction to MATLAB

Published in: Education
  • How I Cured My Uterine Fibroids? Ex Sufferer reveals secret system, For Lasting Uterine Fibroids Freedom... ★★★ https://bit.ly/2ONPXxg
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • 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
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Download The Complete Lean Belly Breakthrough Program with Special Discount. ◆◆◆ http://scamcb.com/bkfitness3/pdf
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Download The Complete Lean Belly Breakthrough Program with Special Discount. ■■■ http://scamcb.com/bkfitness3/pdf
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

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);

×