1 / 18

CS 170 – Intro to Scientific and engineering Programming

CS 170 – Intro to Scientific and engineering Programming . Matrices. Matlab = Matrix + Laboratory What is the difference between array and matrix? Matrix: mathematical term, 2D only Array: CS term, data structure, can be more than 2D. Arrays.

lucky
Télécharger la présentation

CS 170 – Intro to Scientific and engineering Programming

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CS 170 – Intro to Scientific and engineering Programming

  2. Matrices • Matlab = Matrix + Laboratory • What is the difference between array and matrix? • Matrix: mathematical term, 2D only • Array: CS term, data structure,can be more than 2D

  3. Arrays A rectangular arrangement of numbers is called an array or matrix.

  4. Vectors and Arrays • 1-by-1 arrays: scalars • 1-by-N arrays: row vectors • N-by-1 arrays: column vectors • Row and Column vectors are also sometimes just called vectors • In Matlab, all arrays of numbers are called double arrays.

  5. Creating Arrays Horizontal and Vertical Concatenation (ie., “stacking”) • Square brackets, [, and ] to define arrays • Spaces (and/or commas) to separate columns • Semi-colons to separate rows Example >> [ 3 4 5 ; 6 7 8 ] is the 2-by-3 array If A and B are arrays with the same number of rows, then >> C = [ A B ] is the array formed by stacking A “next to” B Once constructed, C does not “know” that it came from two arrays stacked next to one another. No partitioning information is maintained. If A and B are arrays with the same number of columns, then >> [ A ; B ] is the array formed by stacking A “on top of” B So, [ [ 3 ; 6 ] [ 4 5 ; 7 8 ] ] is equal to [ 3 4 5;6 7 8 ]

  6. Creating special arrays ones(n,m) • a n-by-mdouble array, each entry is equal to 1 zeros(n,m) • a n-by-mdouble array, each entry is equal to 0 rand(n,m) • a n-by-mdouble array, each entry is a random number between 0 and 1. Examples >> A = ones(2,3); >> B = zeros(3,4); >> C = rand(2,5);

  7. : convention The “: (colon) convention” is used to create row vectors, whose entries are evenly spaced. 7:2:18 equals the row vector [ 7 9 11 13 15 17 ] If F, J and L are numbers with J>0, F ≤ L, then F:J:L creates a row vector [ F F+J F+2*J F+3*J … F+N*J ] where F+N*J ≤ L, and F+(N+1)*J>L Many times, the increment is 1. Shorthand for F:1:L is F:L

  8. F:J:L with J<0 (decrementing) You can also decrement (ie., J<0), in which case L should be less than F. Therefore 6.5:-1.5:0 is the row vector [ 6.5 5.0 3.5 2.0 0.5 ]

  9. The SIZE command If A is an array, then size(A) is a 1-by-2 array. • The (1,1) entry is the number of rows of A • The (1,2) entry is the number of columns of A If A is an array, then size(A,1) is the number of rows of A size(A,2) is the number of columns of A Example >> A = rand(5,6); >> B = size(A) >> size(A,2)

  10. Accessing single elements of a vector If A is a vector (ie, a row or column vector), then A(1) is its first element, A(2) is its second element,… Example >> A = [ 3 4.2 -7 10.1 0.4 -3.5 ]; >> A(3) >> Index = 5; >> A(Index) This syntax can be used to assign an entry of A. Recall assignment >> VariableName = Expression An entry of an array may also be assigned >> VariableName(Index) = Expression So, change the 4’th entry of A to the natural logarithm of 3. >> A(4) = log(3);

  11. Accessing elements and parts of arrays If M is an array, then M(3,4) is • the element in the (3rd row , 4th column) of M If M is an array, then M([1 4 2],[5 6]) • is a 3-by-2 array, consisting of the entries of M from • rows [1, 4 and 2] • columns [5 and 6] In an assignment >> M(RIndex,CIndex) = Expression the right-hand side expression should be a scalar, or the same size as the array being referenced by M(RIndex,CIndex) Do some examples

  12. Layout in memory The entries of a numeric array in Matlab are stored together in memory in a specific order. >> A = [ 3 4.2 8 ; -6.7 12 0.75 ]; represents the array Somewhere in memory, Matlab has Name = ‘A’ Size = [2 3]; Data = Workspace: Base

  13. RESHAPE RESHAPE changes the size, but not the values or order of the data in memory. >> A = [ 3 4.2 8 ; -6.7 12 0.75 ]; >> B = reshape(A,[3 2]); The result (in memory is) So, A is the array Name = ‘B’ Size = [3 2]; Data = Name = ‘A’ Size = [2 3]; Data = while B is the array

  14. END Suppose A is an N-by-M array, and a reference of the form A(RIndex,CIndex) Any occurence of the word end in the RIndex is changed (automatically) to N Any occurence of the word end in the CIndex is changed (automatically) to M Example: >> M = rand(4,5); >> M(end,end) >> M([1 end],[end-2:end])

  15. : as a row or column index Suppose A is an N-by-M array, and a reference of the form A(RIndex,CIndex) If RIndex is a single colon, :, then RIndex is changed (automatically) to 1:N (every row) If CIndex is a single colon, :, then CIndex is changed (automatically) to 1:M (every column) Example: >> M = rand(4,5); >> M(:,[1 3 5])

  16. Matrix operations • Add, Subtract, Multiply examplesA+BA-BA*B • Do they have to have the same dimensions? • What about division?A./B

  17. Unary Numeric Operations on double Arrays Unary operations involve one input argument. Examples are: • Negation, using the “minus” sign • Trig functions, sin, cos, tan, asin, acos, atan,… • General rounding functions, floor, ceil, fix, round • Exponential and logs, exp, log, log10, sqrt • Complex, abs, angle, real, imag Example: If A is an N1-by-N2-by-N3-by-… array, then B = sin(A); is an N1-by-N2-by-N3-by-… array. Every entry of B is the sin of the corresponding entry of A. The “for”-loop that cycles the calculation over all array entries is an example of the vectorized nature of many Matlab builtin functions

  18. Questions??

More Related