Arrays >> x = [1 2 3 4 5]; y = 2*x y= 2 4 6 8 10 x and y are one dimensional arrays called vectors. In MATLAB all variables are arrays. They allow functions with many values to be described. EGR 106 – Week 2 – Arrays Definition, size, and terminology Construction methods Addressing and sub-arrays Some useful functions for arrays Character arrays Arrays chapter 2, pages 33 - 50 Scripts chapter 4, pages 85 - 93 Recall from Last Week Variables: placeholders for numerical data – – – equal sign is an assignment operator c = 7.5 c=c+1 naming restrictions (not pi, etc. ) can be complex valued ( x = 3 + i 7 ) Basic math on numbers and variables: Precedence () ^ * / + - Names for special sizes – scalar: 1 x 1 array – row vector: 1 x C array [ 9 7 5 4 2] is a 1 x 5 row vector – column vector: R x 1 array 1 3 4 4 or [4] is a 3 x 1 column vector Uniformly Spaced Vectors Colon operator first : increment : maximum yields a row vector of equally spaced values – examples: 0 : 2 : 10 1:5 7 : -2 : -3 1:2:8 – default for increment is 1 [0 [1 [7 [1 2 2 5 3 4 3 3 5 6 4 1 7 8 10 ] 5 ] -1 -3 ] ] Note – does not hit 8!! Arrays Fundamental data unit in Matlab – all variables are stored as arrays Data values organized into rows and columns yield = – 4 5 10 4 18 -3 3 66 2 9 20 0 Marty name = James Bob numeric or alphanumeric entries Array Construction Direct specification: – – – Name followed by an equal sign ( = ), just like variables List values within a pair of brackets ( [ ] ) Enter data one row at a time left to right, top to bottom order space or comma between the values rows separated by semicolons or the enter key Size or dimension of an array: – – number of rows and columns written as R by C or R x C where R = number of rows C = number of columns e.g. 4 5 3 9 yield is 3 by 4 10 4 66 20 yield = 18 -3 test = 4 5 2 3 0 5 0 test is 1 by 5 Building Arrays >>a = [1 2 3; 4 5 6; 7 8 9; 10 11 12] >>a = [1:3; 4:6; 7:9; 10:12] – Can use simple math operations as well as numerics as the entries: – Note the common format of all entries in the response (exp(1) = e = 2.71828, log10(100) = 2, 2-12 = 0.00024414) – MATLAB scales the exponent to the largest entry !! – This scaling is sometimes deceptive: Not really zero Really zero Concatenation – gluing arrays together if – a=[1 2 3] b=[4 5 6] Attaching left to right – use a comma [ a, b ] 1 2 3 4 5 6 comma – Attaching top to bottom – use a semicolon semicolon [ a; b ] 1 2 3 4 5 6 – Note that sizes must match for this to work: if then a=[1 2 3] b = [ a, b ] = ?? – 4 10 5 4 [ a; b ] = ?? Size needs for concatenation: # of rows the same for side by side (comma) # of columns the same for top to bottom (semicolon) Addressing and Sub-Arrays How to indicate a particular element within an array: – – – use parentheses after the array name list desired row, comma, desired column e.g. yield(2,4) yield = 4 5 10 4 18 -3 3 66 2 9 20 0 How About More than One Entry? Can specify a rectangular sub-array – – – again, use parenthesis after the array name list desired rows, comma, desired columns as a vector, typically in brackets e.g. yield([1 2],[3 4]) yield = 4 5 10 4 18 -3 3 66 2 9 20 0 Used to read a value from an array (right hand side of = ) Addressing Errors Things that do Work Single indexing of matrices counts down columns, starting at the top left Some Useful Array Operators Transpose (single quote symbol ' ) – switches rows and columns Useful Array Functions length(A) is the number of elements in the vector A [m n] = size(A), where A is a matrix with m rows and n columns ones(n) is an n x n matrix of ones zeros(n) is an n x n matrix of zeros CHANGE THE MATRIX sample = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 >> sample(1,3)=9 sample = 1 2 9 4 5 6 7 8 9 10 11 12 13 14 15 16 Used to read a sub-array ( rhs of =) Note – scalar row choice does not need brackets! Character Arrays Rows of the array are strings of alphanumeric characters, one array entry per character Enter using a single quotation mark ( ' ) at each end Assigning values with too large an index just grows the array Scalars work for subarray replacement – they just scale up to the right size Replacing with a null matrix is the same as deleting – but it only works for entire rows or columns Rules of the road for arrays: Symbols to use: brackets to glue elements together to make an array (left to right or top to bottom) comma (or space) and semicolon (or enter) for separating column/row elements parentheses after the array name for addressing Be careful to match array sizes Remember – rows first, then columns in addressing Scripts – Simple Programs So far, commands have been typed in the command window: – – Executed by pressing “enter” Edited using the arrow keys or the history window Script (m-file) Concept A file containing Matlab commands – – Commands are executed one by one sequentially – – Can be re-executed Is easily changed/modified or e-mailed to someone File is executed by typing its name (without .m) Results appear in the command window (or use ; ) Can be created using any text editor – – .m extension Listed in Current Directory window Sample Scripts DIFFUSION Diffusion – is the movement of matter driven by chemical and thermal processes such as concentration gradients and heating. Both are needed as it is an activation controlled process. Atoms will diffuse down a concentration gradient provided they have overcome the activation energy needed for the process. Copper atoms will diffuse into the Nickel until an equal concentration is Achieved. Remember that Cu-Ni system Is one of complete solid solubility. Cu Position Practical Example Decarburization at 1200F after quench crack in material. The crack left enough open surface For the carbon to diffuse out and leave a ferrite layer either side of the crack. ARRAYS FOR DIFFUSION DIFFUSION RATE AGAINST TEMPERATURE STRENGTH AGAINST CARBON CONTENT