Lecture 2. Arrays. 1 Introduction

Similar documents
Introduction to MatLab. Introduction to MatLab K. Craig 1

OUTLINES. Variable names in MATLAB. Matrices, Vectors and Scalar. Entering a vector Colon operator ( : ) Mathematical operations on vectors.

FreeMat Tutorial. 3x + 4y 2z = 5 2x 5y + z = 8 x x + 3y = -1 xx

MATH (CRN 13695) Lab 1: Basics for Linear Algebra and Matlab

MAT 343 Laboratory 1 Matrix and Vector Computations in MATLAB

Lecture 2: Variables, Vectors and Matrices in MATLAB

Introduction to Matlab. By: Dr. Maher O. EL-Ghossain

Basics: vectors, matrices, arrays

Introduction to MATLAB

ME305: Introduction to System Dynamics

Matrices. A Matrix (This one has 2 Rows and 3 Columns) To add two matrices: add the numbers in the matching positions:

Dr Richard Greenaway

A 30 Minute Introduction to Octave ENGR Engineering Mathematics Tony Richardson

MATLAB Tutorial. Mohammad Motamed 1. August 28, generates a 3 3 matrix.

MATLAB Project: Getting Started with MATLAB

MATLAB COURSE FALL 2004 SESSION 1 GETTING STARTED. Christian Daude 1

MAT 343 Laboratory 1 Matrix and Vector Computations in MATLAB

Identity Matrix: >> eye(3) ans = Matrix of Ones: >> ones(2,3) ans =

MATLAB Tutorial EE351M DSP. Created: Thursday Jan 25, 2007 Rayyan Jaber. Modified by: Kitaek Bae. Outline

Introduction to MATLAB Programming

To start using Matlab, you only need be concerned with the command window for now.

EGR 111 Introduction to MATLAB

Vectors and Matrices. Chapter 2. Linguaggio Programmazione Matlab-Simulink (2017/2018)

MATLAB Project: Getting Started with MATLAB

x = 12 x = 12 1x = 16

Physics 326G Winter Class 2. In this class you will learn how to define and work with arrays or vectors.

Computational Mathematics

LAB 2 VECTORS AND MATRICES

2.0 MATLAB Fundamentals

Arrays and Matrix Operations

Starting Matlab. MATLAB Laboratory 09/09/10 Lecture. Command Window. Drives/Directories. Go to.

It can be confusing when you type something like the expressions below and get an error message. a range variable definition a vector of sine values

Matlab Tutorial. The value assigned to a variable can be checked by simply typing in the variable name:

Mathematical Operations with Arrays and Matrices

Using the fprintf command to save output to a file.

Introduction to Matlab

Introduction to Matlab

TUTORIAL 1 Introduction to Matrix Calculation using MATLAB TUTORIAL 1 INTRODUCTION TO MATRIX CALCULATION USING MATLAB

Introduction to MATLAB for Engineers, Third Edition

MAT 275 Laboratory 2 Matrix Computations and Programming in MATLAB

Some elements for Matlab programming

Matlab and Octave: Quick Introduction and Examples 1 Basics

Mathematics 4330/5344 #1 Matlab and Numerical Approximation

Introduction to Engineering gii

Grace days can not be used for this assignment

MATLAB: The Basics. Dmitry Adamskiy 9 November 2011

Introduction to Matlab

Therefore, after becoming familiar with the Matrix Method, you will be able to solve a system of two linear equations in four different ways.

Interactive Computing with Matlab. Gerald W. Recktenwald Department of Mechanical Engineering Portland State University

AMATH 352: MATLAB Tutorial written by Peter Blossey Department of Applied Mathematics University of Washington Seattle, WA

Eric W. Hansen. The basic data type is a matrix This is the basic paradigm for computation with MATLAB, and the key to its power. Here s an example:

Introduction to MATLAB 7 for Engineers

Learning from Data Introduction to Matlab

Computer Project: Getting Started with MATLAB

MATLAB for beginners. KiJung Yoon, 1. 1 Center for Learning and Memory, University of Texas at Austin, Austin, TX 78712, USA

AH Matrices.notebook November 28, 2016

McTutorial: A MATLAB Tutorial

SF1901 Probability Theory and Statistics: Autumn 2016 Lab 0 for TCOMK

MATLAB Basics EE107: COMMUNICATION SYSTEMS HUSSAIN ELKOTBY

Matrices 4: use of MATLAB

Introduction to PartSim and Matlab

CITS2401 Computer Analysis & Visualisation

Constraint-based Metabolic Reconstructions & Analysis H. Scott Hinton. Matlab Tutorial. Lesson: Matlab Tutorial

Introduction to MATLAB

Computer Packet 1 Row Operations + Freemat

0_PreCNotes17 18.notebook May 16, Chapter 12

Lab of COMP 406. MATLAB: Quick Start. Lab tutor : Gene Yu Zhao Mailbox: or Lab 1: 11th Sep, 2013

CALCULATING TRANSFORMATIONS OF KINEMATIC CHAINS USING HOMOGENEOUS COORDINATES

(Creating Arrays & Matrices) Applied Linear Algebra in Geoscience Using MATLAB

Digital Image Analysis and Processing CPE

MATLAB for Experimental Research. Fall 2018 Vectors, Matrices, Matrix Operations

Introduction to Matrix Operations in Matlab

Introduction to MATLAB

Introduction to MATLAB

Experiment 1: Introduction to MATLAB I. Introduction. 1.1 Objectives and Expectations: 1.2 What is MATLAB?

A Quick Introduction to MATLAB/Octave. Kenny Marino, Nupur Chatterji

Matlab Programming Introduction 1 2

MATLAB GUIDE UMD PHYS401 SPRING 2012

MATLAB Tutorial III Variables, Files, Advanced Plotting

Programming in Mathematics. Mili I. Shah

Slightly revised version of Scilab and Matrices by David Arnold, College of the Redwoods, August 17, 1998.

1 Introduction to Matlab

MATLAB NOTES. Matlab designed for numerical computing. Strongly oriented towards use of arrays, one and two dimensional.

6.094 Introduction to MATLAB January (IAP) 2009

What is MATLAB? What is MATLAB? Programming Environment MATLAB PROGRAMMING. Stands for MATrix LABoratory. A programming environment

MATLAB Tutorial Matrices & Vectors MATRICES AND VECTORS

Matlab Tutorial and Exercises for COMP61021

A = [1, 6; 78, 9] Note: everything is case-sensitive, so a and A are different. One enters the above matrix as

ARRAY VARIABLES (ROW VECTORS)

Introduction to Matlab

MATLAB = MATrix LABoratory. Interactive system. Basic data element is an array that does not require dimensioning.

Inlichtingenblad, matlab- en simulink handleiding en practicumopgaven IWS

Creates a 1 X 1 matrix (scalar) with a value of 1 in the column 1, row 1 position and prints the matrix aaa in the command window.

CME 192: Introduction to Matlab

Matrix Inverse 2 ( 2) 1 = 2 1 2

Introduction. Matlab for Psychologists. Overview. Coding v. button clicking. Hello, nice to meet you. Variables

Part #1. A0B17MTB Matlab. Miloslav Čapek Filip Kozák, Viktor Adler, Pavel Valtr

ECE Lesson Plan - Class 1 Fall, 2001

MATLAB Tutorial. 1. The MATLAB Windows. 2. The Command Windows. 3. Simple scalar or number operations

NatSciLab - Numerical Software Introduction to MATLAB

Transcription:

1 Introduction Lecture 2 Arrays As the name Matlab is a contraction of matrix laboratory, you would be correct in assuming that Scilab/Matlab have a particular emphasis on matrices, or more generally, arrays. Indeed, the manner in which Scilab/Matlab handles arrays is one of its great strengths. Matrices, vectors and the operations of linear algebra are of tremendous importance in engineering, so this material is quite foundational to much of what we will do in this course. In this lesson we are going to focus on generating and manipulating arrays. In later lessons we will use them extensively to solve problems. Consider the following session. --> [1,2;3,4] 3. 4. -->x = [1;2] x = 2. -->y=a*x y = 5. 1 Here we defined a 2-by-2 matrix A and a 2-by-1 vector x. We then computed the matrix-vector product y=a*x which is a 2-by-1 vector. There are various ways to create an array. In general the elements of an array are entered between the symbols [...]. A space or a comma between numbers moves you to the next column while a carriage return ("enter" key on the keyboard) or a semi-colon moves you to the next row. For example -->B = [ 1 2 --> 3 4] B = 3. 4. creates a 2-by-2 array using spaces and a carriage return. The following example shows how either commas or spaces can be used to separate columns. -->u = [1,2,3] u = 3. -->v = [1 2 3] v = 3. It's a matter of preference, but I find that using commas increases readability, especially when

Lecture 2: Arrays 2/16 entering more complicated expressions. The comma clearly delimits the column entries. Now we demonstrate how either semi-colons, carriage returns or both can be used to separate rows. -->x = [1;2;3] x = 2. 3. -->y = [1 --> 2 --> 3] y = 2. 3. -->z = [1; --> 2; --> 3] z = 2. 3. Again, my preference is for a visible delimiter. Exercise 1: Input the following arrays in the console: z=[ 7 3] 2, 2 Initializing an array B= [ 2 1 5 1 3 4] As shown above, arrays can be entered directly at the command line (or within a program). There are some special arrays that are used frequently and can be created using built-in functions. An array of all zeros can be created using the zeros(m,n)command --> zeros(2,3) 0. 0. The command ones(m,n) creates an array of all 1's. -->B = ones(3,2) B = An array with 1's on the diagonal and 0's elsewhere is created using the eye(m,n) command ( eye as in i dentity matrix).

Lecture 2: Arrays 3/16 -->C = eye(3,3) C = 0. 0. Here this creates a 3-by-3 identity matrix. However, the matrix need not be square, as in -->D = eye(2,3) D = 0. 0. To create a square matrix of all 0's except for specified values along the diagonal we use the diag([...]) command -->D = diag([1,2,3]) D = 0. 2. 0. 3. The diag command also allows you to extract the diagonal elements of a matrix --> [1,2;3,4] 3. 4. -->diag(a) 4. The function size(a) returns the dimensions of the array A, as in -->size(a) 2. 2. If you only want the number or rows or columns of a matrix you can specify that --> [1,2,3;4,5,6] 3. -->size(a,'r') //or size(a,1) which is how Matlab does it 2. -->size(a,'c') //or size(a,2) which is how Matlab does it 3. Vectors are one-dimensional arrays. The size() command works on vectors, but the length() command can be more convenient in that it returns a single number which is the number of elements in the vector. Consider the following.

Lecture 2: Arrays 4/16 -->v = [1;2;3] v = 2. 3. -->size(v) 3. -->length(v) 3. An array operator that can be useful in entering array values is the transpose operator. In Scilab/Matlab this is the single quote sign. Consider the following -->v = [1 2 3]' v = 2. 3. Sometimes it is convenient to produce arrays with random values. The rand(m,n) command does this. -->B = rand(2,3) B = 0.2113249 0.0002211 0.6653811 0.7560439 0.3303271 0.6283918 The random numbers are uniformly distributed between 0 and You can use commands like zeros, ones and rand to create an array with the same dimensions as an existing array. For example, in Scilab --> eye(3,2) 0. 0. -->ones(a) //Scilab specific The ones(a) command uses the dimensions of A to form the array of ones. Matlab is slightly different. In Matlab the corresponding command would be >> eye(3,2) 0. 0. >>ones(size(a)) %Matlab specific

Lecture 2: Arrays 5/16 In Matlab you need to use the size() function to pass the dimensions of the array A. In Scilab you do not. In many applications you want to create a vector of equally spaced values. For example -->t = [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8] t = 1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 Instead of entering all the values directly you can use the following short cut -->t = 0:0.1:0.8 t = 1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 This "colon" notation tells Scilab/Matlab to create a vector named t, starting at 0 and incrementing by 0.1 up to the value This approach allows you to define the increment (0.1 in this case). The default increment is 1 as shown here -->x = 1:5 x = 3. 4. 5. Sometimes you are more concerned about the total number of elements in the vector rather than a specific increment. The linspace() command allows you to specify the start and end values and the total number of elements. Consider the following. -->x = linspace(0,1,6) x = 2 0.4 0.6 0.8 This creates a vector with values ranging from 0 to 1 and a total of 6 elements. It is sometimes convenient to be able to "reshape" an array. In Scilab the matrix() command allows you to do this. --> [1,2,3;4,5,6] 3. -->matrix(a,3,2) //Scilab specific 5. 4. 3. 2. 6. In Matlab the reshape() command does this. >> [1,2,3;4,5,6] 3. >>reshape(a,3,2) %Matlab specific 5. 4. 3. 2. 6. Finally, the elements of an array are not limited to numerical values but can consist of defined

Lecture 2: Arrays 6/16 constants, variables or functions. For example, -->x = 0.2 x = 0.2 -->C = [cos(x),sin(x);-sin(x),cos(x)] C = 0.9800666 0.1986693-0.1986693 0.9800666 Exercise 2: Use the colon notation to generate the array 0, 0.25, 0.5, 0.75, Exercise 3: Enter the array B=[ 2 1 5 (already defined in Ex 1). Use 1 3 4] the ones function to create an array of 1 of the same size as B. 3 Combining arrays Two or more existing arrays can be combined into a single array by using the existing arrays as elements in the new array. Consider the following. -->v = [1,2,3] v = 3. --> [v;v] 3. 3. -->B = [v,v] B = 3. 3. The arrays being combined must fit together by having compatible dimensions, otherwise you receive an error. -->u = [4,5] u = 4. 5. -->C = [u;v]!--error 6 Inconsistent row/column dimensions. However consider -->[u,0;v] 4. 5. 0. 3. -->D = [u,v] D = 4. 5. 3.

Lecture 2: Arrays 7/16 Here are two more examples. --> [1,2;3,4]; -->B = [5,6;7,8]; -->[A,B] 5. 6. 3. 4. 7. 8. -->[A;B] 3. 4. 5. 6. 7. 8. These kinds of operations are very useful in many applications where large matrices are constructed by stacking sub-matrices together. The submatrices might represent specific pieces of a system, and the stacking operation corresponds to assembling the system. Exercise 4: Enter u=[1 2 3] and v=[ 4 5] C=[ 1 2 3 4 1 2 3 5]. 4 Operating on array elements. Combine these to form the array If A is a two-dimensional array, then A(m,n) refers to the element in the mth row and nth column. Consider the following. --> [1,2,3;4,5,6;7,8,9] 3. 7. 8. 9. -->A(3,2) 8. -->A(3,2) = 10 3. 7. 10. 9. We can both access and assign the value of A(3,2) directly. Often you want to extract a row or column of a matrix. The "colon" notation allows you to do this. For example, -->A(:,1) 4. 7.

Lecture 2: Arrays 8/16 -->v = A(2,:) v = In the first case we extract the 1st column of A. In the second case we extract the 2nd row of A and assign it to the variable v. In general the semicolon tells Scilab/Matlab to run through all values of the corresponding subscript or index. More generally you can extract a subrange of values. Consider -->A(1:2,2:3) 2. 3. 5. 6. This extracts rows 1 through 2 and columns 2 through 3 to create a new 2-by-2 matrix from the elements of the original 3-by-3 matrix. Elements of a vector can be deleted in the following manner. -->t = 0:0.2:1 t = 2 0.4 0.6 0.8 -->t(2) = [] t = 4 0.6 0.8 -->t(3:5) = [] t = 4 In the first case we delete the second element of t. In the second case we delete elements 3 through 5. This technique applies to deleting rows or columns of a matrix. 3. 7. 10. 9. -->A(1,:) = [] 7. 10. 9. -->A(:,2) = [] 4. 6. 7. 9. 0 0 Exercise 5: Use the eye command to generate the array A=[1 1] 0 1 0. 0 0 0 0 a single element of A to get A=[1 1] 0 1 2. 0 0 Change

Lecture 2: Arrays 9/16 0 0 Exercise 6: Starting with A=[1 1] 0 1 2, extract the 2 nd row to get 0 0 u=[0 1 2 ]. Extract the 3 rd column to get v=[0 1] 2. 5 Arithmetic operations on arrays Arrays can be multiplied or divided by a scalar (single number) -->5*[1,2,3] 5 3. 4.5 -->[1,2,3]/2 0.5 5 An operation such as A+1 where A is a matrix makes no sense algebraically, but Scilab/Matlab interprets this as a shorthand way of saying you want to add 1 to each element of A -->[1,2;3,4]+1 2. 3. 4. 5. Addition, subtract and multiplication of two arrays follow the rules of linear algebra. To add or subtract arrays they must be of the same size. If they are not you get an error. --> [1,2;3,4] 3. 4. -->B = [1,2,3;4,5,6] B = 3. -->A+B!--error 8 Inconsistent addition. Otherwise each element of the resulting array is the sum or difference of the corresponding elements in the two arrays. -->C = [2,1;4,3] C = 2. 4. 3. -->A+C

Lecture 2: Arrays 10/16 3. 3. 7. 7. -->A-C - - To multiply two arrays as in A*B the number of columns of A must equal the number of rows of B. If A is m-by-n then B must be n-by-p. The product A*B will be m-by-p. -->A 3. 4. -->B B = 3. -->A*B 9. 12. 15. 19. 26. 33. -->B*A!--error 10 Inconsistent multiplication. n If C=A*B the elements of C are computed as C ij = A ik B kj. k =1 The inner product, or dot product of two vectors can be calculated by transposing one and performing an array multiplication. -->u = [1;2;3] u = 2. 3. -->v = [4;5;6] v = 4. 5. 6. -->u'*v 32. -->1*4+2*5+3*6 32. Arrays cannot be divided, but we do have the concept of "inverting" a matrix to solve a linear equation. If A x=b and A is a square, non-singular matrix, then x= A 1 b is the solution to

Lecture 2: Arrays 11/16 this system of linear equations. This is sort of like "dividing A into b." In Scilab/Matlab we use the notation A\b to represent this. You can also think of the \ operator as representing the inverse operation, so that A\ functions as A 1. Consider the following. --> [1,2;3,4] 3. 4. -->b = [5;6] b = 5. 6. -->x = A\b x = - 4. 4.5 -->A*x 5. 6. If the matrix A is singular (has no inverse) you'll get an error. We'll talk more about solving systems of linear equations later. Exercise 7: If A=[ 2 1 3 4] [ 1] and b= 1 6 Vectorized functions find x such that Ax=b. A very powerful feature of Scilab/Matlab is that functions can be vectorized. In a language such as C, if I have an array x and I want to calculate the sin of each element of x, I need to use a for loop, as in for (i=1;i<=n;i++) { y(i) = sin(x(i)); } In Scilab/Matlab we simply write y = sin(x) This creates a new array y of the same size as x. Each element of y is the sin of the corresponding element of x. For example -->x = [0,0.1,0.2,0.3] x = 1 0.2 0.3 -->y = sin(x) y = 0998334 0.1986693 0.2955202 Exercise 8: Set x = 0:0.2:1 and calulate y = exp(x) then z = log(y)

Lecture 2: Arrays 12/16 7 Array operators In linear algebra, arrays (e.g., vectors and matrices) are considered entities in their own right and there are rules for operating on them, such as matrix multiplication and the inverse. In practice, sometimes an array is just a convenient collection of numbers. In this case you might want to perform operations on the elements of the array independent of the rules of linear algebra. For example, suppose u=[1 2 3] and v=[4 5 6 ] and you want to multiply each element of u by the corresponding element of v w=[1 4 2 5 3 6]=[4 10 18]. This is not a standard operation in linear algebra. To perform component-by-component operations (or "array operations") you prefix the operator with a period. For example, -->u = [1,2,3] u = 3. -->v = [4,5,6] v = -->u.*v 4. 10. 18. -->u.^2 4. 9. This brings up a subtle point. Consider the following. --> [1,2;3,4] 3. 4. -->A^2 7. 10. 15. 22. -->A.^2 4. 9. 16. Notice the very different results. The operation A^2 tells Scilab/Matlab to use the rules of matrix multiplication to calculate A*A. The operation A.^2 tells Scilab/Matlab to square each element of A. When an array represents a collection of values, say measurements, we often want to look at properties such as the sum or average of the values. Consider the following. -->x = 0:0.1:1 x = 1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 -->sum(x) 5.5

Lecture 2: Arrays 13/16 -->mean(x) 0.5 The function sum() adds all the elements of an array while mean() calculates the average value of the elements. If we wanted to find the mean-square value (average of the squared values) we could use the command -->mean(x.^2) 0.35 This first squares each element of x and computes the mean of those squared values. Here's an important point. Consider the following -->x = [1,2]; -->/x 0.2 0.4 -->(1)./x 0.5 In the first instance Scilab interpreted the dot as a decimal point and returned -->()/x 0.2 0.4 which is something called the pseudo inverse and not what we were after. We need to use parentheses to avoid this interpretation -->(1)./x 0.5 Exercise 9: Set x = 0:0.2:1 and calculate tan(x). Then calculate sin(x)./cos(x) and compare the results. 8 Complex array elements All of the preceding applies to complex array elements. For example, in Scilab (for Matlab use 1i instead of %i) --> [1,%i;2,-%i] i 2. - i -->A^2 + 2.i + i 2. - 2.i - + 2.i The output can be a bit difficult to read with complex arrays. A^2 produces a 2-by-2 matrix of

Lecture 2: Arrays 14/16 complex values each expressed as real and imaginary parts. It can be helpful to view these separately. The real and imag commands allow you to do this. -->B = A^2 B = + 2.i + i 2. - 2.i - + 2.i -->real(b) 2. - -->imag(b) 2. - 2. 2. One subtle point is that the single-quote operator is actually the "transpose-conjugate" operator. It takes the transpose of a matrix followed by its complex conjugate. For a real matrix this is simply the transpose. But for a complex matrix you need to remember that there is also a conjugation operation. -->A i 2. - i -->A' - i i If you just want the transpose of a complex matrix use the.' operator. -->A.' i - i Exercise 10: Set x = 0:0.2:1 and calculate w = exp(%i*x). (Use i instead of %i in Matlab.) Calculate real(w) and compare to cos(x). Calculate imag(w) and compare to sin(x). 9 Structures Arrays are convenient ways to organize data of a common type. Often you want to organize different types of data as a single entity. Many programing languages allow you to do this using structures. In Scilab/Matlab a structure is define as follows. St = struct(field1,value1,field2,value2...); Here's an example -->Object = struct('name','ball joint','mass',2.7) Object = name: "ball joint" mass: 2.7

Lecture 2: Arrays 15/16 This creates a structure named object having two fields: name and mass. Fields are accessed using the syntax struct.field. Here we change the mass -->Object.mass = 3.2 Object = name: "ball joint" mass: 3.2 Fields can be strings, numbers or even arrays. For example, say we have a rigid body. The orientation of this body in space is specified by six numbers: three coordinates of its center of mass, and three rotation angles. We might define a structure such as -->Body = struct('pos',[-2,0,3],'ang',[12,-20,28]) Body = pos: [-2,0,3] ang: [12,-20,28] Elements of the arrays are accessed as follows -->Body.ang(2) = -22 Body = pos: [-2,0,3] ang: [12,-22,28] The use of structures can greatly streamline complicated programing projects by uniting various data into a single logical entity. Arrays of structures are possible, as in -->Person = struct('name','','age',0); -->Member = [person,person,person]; -->Member(2).name = 'Tom'; -->Member(2).age = 32; -->Member(2) name: "Tom" age: 32 This defines a structure person and then an array of three of these structures named member. Each element could refer to a member of a three-member team. Fields are accessed as shown. You can even have structures serve as fields of other structures. Here's an example. -->Book = struct('title','','author',''); -->Class = struct('name','','text',book); -->Class.name = "Engl 101"; -->Class.text.title = "How to Write"; -->Class.text.author = "Kay Smith"; -->Class.text title: "How to Write" author: "Kay Smith" You can skip the initializing of the structure and just start assigning values to the fields. For example. -->clear -->Class.name = 'Intro Psych'; -->Class.enrollment = 24;

Lecture 2: Arrays 16/16 10 Three and higher dimensional arrays Arrays can have as many dimensions as desired. Of course arrays with more than two dimensions are cumbersome to display on the screen or page. Consider --> zeros(2,2,2) (:,:,1) (:,:,2) This creates a three-dimensional array. Elements are accessed in the usual manner -->A(2,1,2) = 3 (:,:,1) (:,:,2) 3. 0.