chapter 3. arrays and array operations - naval …faculty.nps.edu/oayakime/ae2440/slides/chapter 03...

38
All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 1 out of 37 Engineering Computations and Modeling in MATLAB/Simulink Chapter 3. Arrays and Array Operations

Upload: dinhtuyen

Post on 05-May-2018

232 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 1 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

Chapter 3. Arrays and Array Operations

Page 2: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 2 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

Outline

Engineering Computations and Modeling in MATLAB/Simulink

• 3.1 Introduction • 3.2 Types of Arrays and Indexing Their Elements • 3.3 Array Operations • 3.4 Array Functions • 3.5 Using MATLAB Matrix Formalism to Handle Polynomials • 3.6 Handling Text Strings as Character Arrays

Page 3: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 3 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

The Empty Matrix (0-by-0 matrix)

Scalar (1-by-1 matrix)

Vector (1-by-n or n-by-1 matrix)

Raw Vector (1-by-n matrix) Column Vector (n-by-1 matrix)

Matrix (n-by-m matrix)

Rectangular Matrix (n-by-m matrix) Square Matrix (n-by-n matrix)

Magic Matrix Triangular Matrix Diagonal Matrix Orthogonal Matrix

Identity Matrix Block Diagonal Matrix Orthonormal Matrix

2D Array (Matrix) nD Array

Zero Vector Unit Vector Zero Vector Unit Vector

Classification of Arrays

a = [ ]

Page 4: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 4 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

Col 1 Col 3 Col 4 Col 6 Col 2 Col 5

Row 1

Row 3

Row 4

Row 2

Matrices

11 12 13 14 15 16

21 22 23 24 25 26

31 32 33 34 35 36

41 42 43 44 45 46

[ ]ij

a a a a a aa a a a a a

aa a a a a aa a a a a a

= =

a

Page 5: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 5 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

Col 1 Col 3 Col 4 Col 6 Col 2 Col 5

Row 1

Row 3

Row 4

Row 2

Col 1 Col 3 Col 4 Col 6 Col 2 Col 5

Row 1

Row 3

Row 4

Row 2

Examples of 1-, 2- and 3-D Arrays

Col 1 Col 3 Col 4 Col 6 Col 2 Col 5

Row 1

Row 3

Row 4

Row 2

Col 1 Col 3 Col 4 Col 6 Col 2 Col 5

Row 1

Row 3

Row 4

Row 2

Col 1 Col 3 Col 4 Col 6 Col 2 Col 5

Row 1

Row 3

Row 4

Row 2

Col 1 Col 3 Col 4 Col 6 Col 2 Col 5

Row 1

Row 3

Row 4

Row 2

Col 1 Col 3 Col 4 Col 6 Col 2 Col 5

Row 1

Row 3

Row 4

Row 2

4 1×a

1D arrays

2D array

3D array

1 6×a

4 6×a 4 6 5× ×a

Page 1

Page 2

Page 3

Page 4

Page 5

Page 6: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 6 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

Creating Arrays: Quick Start

Page 7: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 7 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

Col 1 Col 3 Col 4 Col 6 Col 2 Col 5

Row 1

Row 3

Row 4

Row 2

Col 1 Col 3 Col 4 Col 6 Col 2 Col 5

Row 1

Row 3

Row 4

Row 2

Addressing a Single Element

Col 1 Col 3 Col 4 Col 6 Col 2 Col 5

Row 1

Row 3

Row 4

Row 2

Col 1 Col 3 Col 4 Col 6 Col 2 Col 5

Row 1

Row 3

Row 4

Row 2

Col 1 Col 3 Col 4 Col 6 Col 2 Col 5

Row 1

Row 3

Row 4

Row 2

Col 1 Col 3 Col 4 Col 6 Col 2 Col 5

Row 1

Row 3

Row 4

Row 2

Col 1 Col 3 Col 4 Col 6 Col 2 Col 5

Row 1

Row 3

Row 4

Row 2

( )4,1a

1D arrays

2D array

3D array

( )1,5a

( )2, 4a ( )1, 4, 4a

Page 1

Page 2

Page 3

Page 4

Page 5

Page 8: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 8 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

12 11 9 10 8 7 5 6 4 3 1 2 9

5 1

10 6 2

11 7 3

12 8 4

A(1,1)

A(3,4)

A(2,1) A(3,1) A(1,2) A(2,2) A(3,2) A(1,3) A(2,3) A(3,3)

A(2,4) A(1,4)

Arrays in Computer Memory

( )3, 2a( )6a

i=sub2ind(size(a),3,2) returns i=6 [r,c]=ind2sub(size(a),6) returns r=3 and c=2

size(a) returns [3 4] length(a) returns 4 (it is equivalent to max(size(X))) ndims(a) returns 2 numel(a) returns 12

Page 9: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 9 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

Col 1 Col 3 Col 4 Col 6 Col 2 Col 5

Row 3

Row 4

Row 2

a(1,1) a(1)

a(4,6) a(24) a(end)

a(2,2) a(6)

Row 1

a(3,1:6) a(3,1:end) a(3,:) a([3 7 11 15 19 23]) a([3:4:23]) a(3,[1,2,3,4,5,6])

a([17 21; 18 22]) a(1:2,5:6)

a([9 13; 12 16]) a([1 4],[3 4])

Addressing Multiple Elements

sub2ind(size(a),[4 2],[2 3])

Page 10: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 10 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

Creating Special Arrays 1) ones(m,n,p,…) creates an mxnxpx… array of ones (ones(n)creates an n x n matrix of ones) 2) zeros(m,n,p,…) creates an mxnxpx… array of zeros (zeros(n) creates an n x n matrix of zeros,

called a null matrix and denoted by 0) 3) rand(m,n,p,…) creates mxnxpx… array with uniformly distributed (on the interval (0.0,1.0))

random entries (rand(n) creates an nxn matrix with random entries) 4) randn(m,n,p,…) creates mxnxpx… array with normally distributed (chosen from a normal

distribution with mean zero, variance one and standard deviation one) random entries (randn(n) creates an nxn matrix with random entries) (try hist(randn(10000,1),20))

5) randi(imax,m,n,p,…) creates mxnxpx… array containing pseudorandom integer values drawn from the discrete uniform distribution on 1:imax (randi(imax) generates a single number, while randi(imax,n) creates a square nxn matrix)

6) randperm(n,k) returns a row vector containing k unique integers selected randomly from 1 to n inclusive

7) eye(m,n) creates an mxn matrix with with 1’s on the diagonal and zeros elsewhere (eye(n) creates a square nxn matrix, called identity matrix and denoted by I, where all the elements are zero except the diagonal elements, which are unity)

8) magic(n) creates a magic square constructed from the integers 1 through n2 with equal row, column, and diagonal sums (produces valid magic squares for all n > 0 except n = 2)

9) pascal(n) creates the Pascal matrix of order n (a symmetric positive definite matrix with integer entries), where any element is computed from Pascal’s triangle, i.e. ai;j=ai-1;j+ai;j-1

Also, see perm

Page 11: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 11 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

Examples of Creating Arrays

>> rand(2,3,2) ans(:,:,1) = 0.8147 0.1270 0.6324 0.9058 0.9134 0.0975 ans(:,:,2) = 0.2785 0.9575 0.1576 0.5469 0.9649 0.9706

>> randi(5,4) ans = 5 3 4 4 3 5 1 4 5 4 5 4 1 5 5 2

>> eye(3,5) ans = 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0

>> magic(5) ans = 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9

Page 12: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 12 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

The diag Function

1) diag(v) puts elements of vector v on the main diagonal of a square matrix 2) diag(v,k) puts n elements of vector v on the kth diagonal of a square matrix of order n+ABS(k)

(for the main diagonal k=0) 3) diag(X) returns a column vector formed from elements of the main diagonal of matrix X 4) diag(X,k) returns a column vector formed from the elements of the kth diagonal of matrix X 5) blkdiag(A,B,C,…), where A, B, C, ... are matrices, outputs a block diagonal matrix

Da

D=blkdiag(a,b,c)

b c

MatrixX

Vector v

X=diag(v,-2)

v=diag(X,-2)

k=0 k>0

k<0

Page 13: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 13 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

Concatenation Functions

1) cat(1,A,B) or vertcat(A,B) is equivalent to [A;B] 2) cat(2,A,B) or horzcat(A,B) is equivalent to [A,B]

Matrix A Matrix B

C=cat(1,A,B)

C=cat(2,A,B) C=cat(3,A,B)

Page 14: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 14 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

Creating Triangular Matrices

1) triu(B,k) returns the upper triangular part of matrix B (on and above the kth diagonal of B) 2) tril(B,k) returns the lower triangular part of matrix B (on and below the kth diagonal of B)

Page 15: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 15 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

Tiling repmat(A,m,n) creates a matrix consisting of an m-by-n tiling of copies of A. The size of

this matrix is [size(A,1)*m,size(A,2)*n] (the statement repmat(A,n) creates an n-by-n tiling).

Matrix A

C=repmat(A,2) C=repmat(A,2,3)

Page 16: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 16 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

Using repmat to Create Signals Ts=0.1;

triangle = repmat([0:Ts:(1-Ts),1:-Ts:(0+Ts)],1,4); subplot(2,1,1) plot(triangle) pulsetrain = repmat([ones(1,125),zeros(1,125)],1,4); time = 0:Ts:Ts*(length(pulsetrain)-1); subplot(2,1,2) stairs(time,pulsetrain)

Of course, Signal Processing Toolbox features a variety of built-in MATLAB functions creating different signals: • square • sawtooth • gauspuls • rectpuls • sinc • diric • tripuls

Page 17: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 17 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

Reshaping 1) reshape(A,m,n) returns the m-by-n matrix, whose elements are taken columnwise from A

(an error results if A does not have m*n elements) 2) reshape(A,m,n,p,...) returns the nD array, whose elements are taken columnwise from A

(m*n*p*… must be the same as prod(size(A)) meaning there is a correct number of elements to do this)

One more option for reshaping the existing arrays is to use the empty matrix. For instance, having matrix A as A = 0.7680 0.4387 0.3200 0.7446 0.6833 0.9708 0.4983 0.9601 0.2679 0.2126 0.9901 0.2140 0.7266 0.4399 0.8392 0.7889 0.6435 0.4120 0.9334 0.6288 and issuing the following two commands: A( : , [2,4] ) = [ ]; A(3,:)=[ ] returns A = 0.7680 0.3200 0.6833 0.9708 0.9601 0.2126 0.7889 0.4120 0.6288

12119 10875 6431 2

Matrix A

1211

910

87

56

43

12

reshape(A,2,3,2)

12119

108

756

431

2

reshape(A,2,6)

reshape(A,4,3)

12

11

910

87

56

43

1

2

Page 18: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 18 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

View and change values of the array elements Applicable functions to visualize the selected cells

Variables Editor after R2012b • double-click a variable in the Workspace browser, or • use openvar variablename command

Selected elements

Page 19: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 19 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

Use document bar to view other variables that you have opened in the Variable Editor

View and change values of the array elements Arrange the display of the array documents Visualize the selected cells

Variables Editor before R2012b • double-click a variable in the Workspace browser, or • use openvar variablename command

Page 20: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 20 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

Visualization of Data Points

plot(R)

R=randi([2,15],10,1);

stem(R)

plot(R,'o')

Page 21: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 21 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

2D Visualization of a Matrix z=ones(100,200);

z(10:50,150:170)=0;

z(70:80,20:35)=0;

z(4:5:100,50:130)=0;

z(3:5:100,50:130)=0;

z(2:5:100,50:130)=0;

z=z-eye(100,200);

spy(z)

imagesc(z)

colorbar

Page 22: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 22 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

3D Visualization of a Matrix

w=0.5*eye(20);

w(5:15,5:15)=-0.2*ones(11);

meshc(w)

[x,y]=meshgrid(-3:.125:3);

z=peaks(x,y);

z(15:35,15:35)=NaN;

meshc(x,y,z)

Page 23: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 23 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

Visualization of Random Data Sample

histogram(rand(100,1)) hist(rand(1000,10),20)

Page 24: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 24 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

Scalar, Matrix and Cross Product Two Matrices

1 11

[ ]E A*Bn

n n ij ik kjk

e a b× ×=

= = = =

∑A B

1 1 1 2 1 3

3 1 1 3 2 1 2 2 2 3

3 1 3 2 3 3

[ ]F A*Bij

a b a b a bf a b a b a b

a b a b a b× ×

= = = =

A B

[ ]2 3 3 2 3 1 1 3 1 2 2 1a b a b a b a b a b a b= × = − − −K A B

>> E=dot([1 2 3 4],[4 3 2 1]) E = 20 >> E=[1 2 3 4]*[4 3 2 1]' E = 20

Vector A

Vector B

Vector K=A×BA=[1.5,0,0]; B=[0,0.8,0]; K=cross(A,B); quiver3(0,0,0,A(1),A(2),A(3),'b','Linewidth',3) hold quiver3(0,0,0,B(1),B(2),B(3),'g--','Linewidth',3) quiver3(0,0,0,K(1),K(2),K(3),'r-.','Linewidth',3) axis equal xlabel('axis x') ylabel('axis y') zlabel('axis z') legend('Vector A','Vector B','cross(A,B)',2) view([-140 20])

Cross product

Matrix product

>> F=[1 2 3]'*[4 3 2] F = 4 3 2 8 6 4 12 9 6

Scalar product

Page 25: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 25 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

Non-Standard (element-wise) Array Operations

Symbol Operation MATLAB Form ^ exponentiation, ab a.^b * multiplication, ab a.*b / right division, a/b a./b \ left division, a\b a.\b

Page 26: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 26 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

The Beauty of MATLAB clear all, clc a=rand(1000,10000); b=rand(1000,10000); tic c=a.^b; toc clear c tic for i=1:1000 for j=1:10000 c(i,j)=a(i,j)^b(i,j); end end toc clear c tic c=NaN(1000,10000); for i=1:1000 for j=1:10000 c(i,j)=a(i,j)^b(i,j); end end toc

Elapsed time is 4.711545 seconds. Elapsed time is 113.778294 seconds. Elapsed time is 8.185135 seconds.

Page 27: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 27 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

Array Manipulation Functions 1) sort(A) sorts the elements of A along the first non-singleton dimension of an array; sort(A,dim) sorts along

the dimension dim; sort(..., 'descend') sorts the elements in the descending order

2) sortrows(A) sorts the rows of A in ascending order of the first column; sortrows(A,column) sorts matrix A based on the columns specified in the vector column

3) flip(A) returns an array of the same size as A, but with the order of the elements reversed; flip(A,dim) reverses the order of the elements in A along the dimension dim; flipud(A) returns A with its rows flipped in the up-down direction; fliplr(A) returns A with its columns flipped in the left-right direction

>> a=magic(4); a(:,2)=[] a = 16 3 13 5 10 8 9 6 12 4 15 1

>> sort(a) ans = 4 3 1 5 6 8 9 10 12 16 15 13

>> sort(a,2) ans = 3 13 16 5 8 10 6 9 12 1 4 15

>> sortrows(a) ans = 4 15 1 5 10 8 9 6 12 16 3 13

>> flip(a) ans = 4 15 1 9 6 12 5 10 8 16 3 13

Also, see circshift, permute, rot90

Page 28: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 28 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

sum, min and max Functions 1) sum(A) sums the elements of each column of A and returns a row vector with these sums

(sum(A,dim) sums along (varying) the dimension of A specified by scalar dim); if A is a multidimensional array, sum(A) treats the values along the first non-singleton dimension as vectors, returning an array of row vectors

2) min(A,B) returns an array the same size as A and B with the smallest elements taken from A or B (the dimensions of A and B must match, or they may be scalar)

3) min(A) returns the smallest elements along different dimensions of an array A: the minimum value of A if A is a vector, a row vector containing the minimum value of each column of A if A is a matrix; min(A) operates along the first non-singleton dimension if A is a multidimensional array

4) min(A,[ ],dim) operates along the specific dimension dim

5) [x,k]=min(...) returns minimum values in row vector x along with indices in a row vector k

6) max(...) is similar to min(...), but using maximum values

>> sum(a) ans = 34 34 34

>> min(a,[],2) ans = 3 5 6 1

>> [res,ind]=max(a) res = 16 15 13 ind = 1 4 1

Also, see prod, cumprod

Page 29: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 29 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

Statistical Functions

1) mean(A) returns the mean values of the elements ( ) along different dimensions of an

array: returns the mean value of the elements in vector A, produces a row vector containing the mean value of each column if A is a matrix, and treats the values along the first non-singleton dimension as vectors, returning an array of mean values if A is an array (the direction can be changed to dim by using mean(A,dim) command)

2) median(...) returns the median values of the elements along different dimensions of an array with the syntax similar to that of mean

3) std(A,[ ],dim) returns the standard deviation for vectors, produces a row vector containing the standard deviation along the dimension dim column for arrays (dim is optional, - if omitted the first non-singleton dimension is used by default); the place holder [ ] may be either 0 (default value) or 1

corresponding to square root of an unbiased estimate of the variance ( )

and the second moment of the set of values about their mean ( ), respectively;

1

1 n

ii

x xn =

= ∑

2

1

1 ( )1

n

ii

s x xn =

= −− ∑

2

1

1 ( )n

ii

s x xn =

= −∑

Also, see var, mode

Page 30: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 30 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

find Function 1) find(A) locates all nonzero elements of array A, and returns their linear indices in a column vector (if

A contains no nonzero elements or is an empty array, then find(A) returns an empty array)

2) find(A,k,ind) returns at most the first (if ind='first' or omitted) or the last (ind='last') k indices corresponding to the nonzero entries of A

3) [r,c,v]=find(...) returns a vector v of the nonzero entries in matrix A, as well as row r and column c indices of these elements (to see the results in the most readable way, we recommend issuing one of the following two instructions: [r c v] or r', c', v')

>> a=magic(4); a(:,2)=[]

>> [r,c,v]=find(a>10); >> disp(' row column element') >> disp([r,c,a(sub2ind(size(a),r,c))]) row column element 1 1 16 4 2 15 1 3 13 3 3 12

a = 16 3 13 5 10 8 9 6 12 4 15 1

>> ind=find(a>10) ind = 1 8 9 11

Also, see nnz, nonzeros

Page 31: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 31 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

Matrix functions

1) det(A) determines the determinant of a square matrix A

2) inv(A) computes the inverse of the square matrix A (a warning message is printed if A is badly scaled or nearly singular)

3) trace(A) sums the diagonal elements of the square matrix A, which is also the sum of the eigenvalues of A

4) eig(A) returns a column vector containing the eigenvalues of square matrix A

>> a=magic(3); a(:,2)=[] >> a.' ans = 8 3 4 6 7 2

a = 8 6 3 7 4 2

1) transpose(A) or .' performs the non-conjugate transpose of matrix A

2) ctranspose(A) or ' computes the complex-conjugate transpose of matrix A

>> a' ans = 8 3 4 6 7 2

>> (a+i).' ans = 8+1i 3+1i 4+1i 6+1i 7+1i 2+1i >> (a+i)' ans = 8-1i 3-1i 4-1i 6-1i 7-1i 2-1i

Page 32: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 32 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

More Array Functions (Unions, Intersection, Membership)

19) issorted(A) determines whether elements in A are in sorted order (see the sort function) 20) intersect(A,B) returns the data common to both A and B with no repetitions 21) ismember(A,B) returns an array containing 1 (true) where the data in A is found in B (elsewhere, it

returns 0 (false) (ismembertol(A,B,tol) allows setting membership within tolerance tol) 22) setdiff(A,B) returns the data in A that is not in B 23) setxor(A,B) sets exclusive OR of two arrays, A and B 24) union(A,B) returns the combined data from A and B with no repetitions 25) unique(A) finds the unique values in the array A (uniquetol(A,tol) allows finding the unique

values with tolerance tol)

>> a=intersect([1 3 5 3 4],[3 6 1 7]) a = 1 3

>> a=unique([1 3 5 3 4]) a = 1 3 4 5 >> a=union([1 3 5 3 4],[3 6 1 7]) a = 1 3 4 5 6 7

>> a=issorted([1 3 5 3 4]) a = 0

>> a=setxor([1 3 5 3 4],[3 6 1 7]) a = 4 5 6 7

>> a=ismember([1 3 5 3 4],[3 6 1 7]) a = 1 1 0 1 0

>> a=setdiff([1 3 5 3 4],[3 6 1 7]) a = 4 5

For advanced users

Page 33: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 33 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

Handling Polynomials

>> pretty(poly2sym([1 2 3 4]))

3 2

x + 2 x + 3 x + 4

Function Description

conv computes a product of two polynomials deconv performs a division of two polynomials

(returns the quotient and remainder) poly creates a polynomial with specified roots polyder calculates the derivative of polynomials

analytically polyeig solves polynomial eigenvalue problem polyfit produces polynomial curve fitting polyint integrates polynomial analytically polyval evaluates polynomial at certain points polyvalm evaluates a polynomial in a matrix sense residue converts between partial fraction

expansion and polynomial coefficients roots finds polynomial roots poly2sym converts a vector of polynomial

coefficients to a symbolic polynomial sym2poly converts polynomial coefficients to a

vector of polynomial coefficients

Page 34: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 34 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

Handling Text Strings

Page 35: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 35 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

The char Function

Page 36: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 36 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

String Operations Functions

Function Brief description

blanks creates a string of blanks

char converts an input to character array (string)

deblank removes trailing blanks

eval executes string with MATLAB expression

findstr finds one string within another

lower converts string to lowercase

regexp matches regular expression

regexpi matches regular expression, ignoring case

regexprep replaces string using regular expression

strcat concatenates strings

strcmp compares strings

Function Brief description

strcmpi compares strings, ignoring case

strfind finds one string within another

strjust justifies string

strmatch finds matches for string

strncmp compares first n characters of strings

strncmpi compares first n characters, ignoring case

strread reads formatted data from a string

strrep replaces a string within another

strtok finds token in string

strvcat concatenates strings vertically

upper converts string to uppercase

If needed, matlab.lang.makeValidName(S) could help you constructing a valid MATLAB variable name from an input string S

Page 37: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 37 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

Creating the Variable Names

In the future releases genvarname will be replaced with matlab.lang.makeValidName and matlab.lang.makeUniqueStrings

For advanced users

Page 38: Chapter 3. Arrays and Array Operations - Naval …faculty.nps.edu/oayakime/AE2440/Slides/Chapter 03 Arrays...Chapter 3. Arrays and Array Operations All rights reserved. No part of

All rights reserved. No part of this publication may be reproduced, distributed, or transmitted, unless for course participation, in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the Publisher and/or Author. Contact the American Institute of Aeronautics and Astronautics, Professional Development Programs, Suite 500, 1801 Alexander Bell Drive, Reston, VA 20191-4344. 38 out of 37

Engineering Computations and Modeling in MATLAB/Simulink

The End of Chapter 3

Questions?