L14. Arrays and Functions Functions with array parameters.

Slides:



Advertisements
Similar presentations
1 Chapter 13 Curve Fitting and Correlation This chapter will be concerned primarily with two separate but closely interrelated processes: (1) the fitting.
Advertisements

Insight Through Computing 10. Plotting Continuous Functions Linspace Array Operations.
Insight Through Computing 13. More on Arrays Square Bracket Notation Subscripts Plotting and color Built-In Functions: ginput, fill, sum, axis.
Arrays  An array is a collection of like elements.  There are many engineering applications that use arrays.  MATLAB ® stores data in arrays and performs.
Introduction to Programming (in C++) Numerical methods I Jordi Cortadella Dept. of Computer Science, UPC.
Insight Through Computing 14. Still More on Arrays Functions with array parameters. Row and column vectors Built-Ins: length, zeros, std Revisit: rand,
Lecture 4 Sept 8 Complete Chapter 3 exercises Chapter 4.
Week 3 Last week Vectors Array Addressing Mathematical Operations Array Multiplication and Division Identity Matrix Inverse of a Matrix Element by Element.
Given three points of a circle: (-1,1), (7,-3), (-2,-6).
Lecture 4 Sept 7 Chapter 4. Chapter 4 – arrays, collections and indexing This chapter discusses the basic calculations involving rectangular collections.
Graphics Pipeline Rasterization CMSC 435/634. Drawing Terms Primitive – Basic shape, drawn directly – Compare to building from simpler shapes Rasterization.
CHAPTER 4 Coordinate Geometry and Traverse Surveying
CSE554SimplificationSlide 1 CSE 554 Lecture 7: Simplification Fall 2014.
CS 450: Computer Graphics REVIEW: OVERVIEW OF POLYGONS
MATLAB INTRO CONTROL LAB1  The Environment  The command prompt Getting Help : e.g help sin, lookfor cos Variables Vectors, Matrices, and Linear Algebra.
Martin Ellison University of Warwick and CEPR Bank of England, December 2005 Introduction to MATLAB.
Matlab Chapter 2: Array and Matrix Operations. What is a vector? In Matlab, it is a single row (horizontal) or column (vertical) of numbers or characters.
CSE554AlignmentSlide 1 CSE 554 Lecture 5: Alignment Fall 2011.
Part7: Geometric Transformations
Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. A Concise Introduction to MATLAB ® William J. Palm III.
Graphics Pipeline Rasterization CMSC 435/634. Drawing Terms Primitive – Basic shape, drawn directly – Compare to building from simpler shapes Rasterization.
1 Lab 2 of COMP 319 Lab tutor : Shenghua ZHONG Lab 2: Sep. 28, 2011 Data and File in Matlab.
Chapter 9 Transformations.
CSE554SimplificationSlide 1 CSE 554 Lecture 7: Simplification Fall 2013.
41 - 4/24/2000AME 150L1 Solving Engineering Problems, Integrating Equations.
MA/CS 375 Fall 2002 Lecture 3. Example 2 A is a matrix with 3 rows and 2 columns.
Anne Calder & Alan Cordero. Goals Create 1000 random polynomials up to degree 100 Calculate the number of real zeros on average for each degree Check.
CS418 Computer Graphics John C. Hart
9-4 Polygons in the Coordinate Plane Learn to draw polygons in the coordinate plane and find the lengths of their sides.
10/15/02 (c) 2002 University of Wisconsin, CS559 Who Am I? Prof Stephen Chenney These notes will be online after the lecture – in fact they’re online already.
1. Overview 2. plot in 2D 3. Plot in 3D 4. Other possible charts 5. Engineers: label your plots! 6. Plots & Polynomial Plotting 11.
Basics Copyright © Software Carpentry 2011 This work is licensed under the Creative Commons Attribution License See
MA/CS 375 Fall 2002 Lecture 2. Motivation for Suffering All This Math and Stuff Try the Actor demo from
Honors Geometry.  We learned how to set up a polygon / vertex matrix  We learned how to add matrices  We learned how to multiply matrices.
Intro to Matlab Rogelio Long September 3, How to access MyDesktop Log in with your utep id and password.
Department of Computer Science Western Michigan University
CSE 554 Lecture 8: Alignment
MID-POINT CIRCLE ALGORITHM

Flood fill algorithm Also called seed fill, is an algorithm that determines the area connected to a given node in a multi-dimensional array, When applied.
Linear Algebra Review.
Math Fundamentals Maths revisit.
Working with Data in MATLAB
1.6 Basic Constructions SOL: G4 Objectives: The Student Will …
Built-in MATLAB Functions Chapter 3
Chapter 3 Arrays and Vectors
(c) 2002 University of Wisconsin, CS559
Introduction To Matrices
Lecture 05: Mid-point Ellipse algorithm Dr. Manal Helal – Fall 2014
Matlab Workshop 9/22/2018.
Fitting Curve Models to Edges
StatLab Matlab Workshop
Vectors and Matrices Chapter 2 Attaway MATLAB 4E.
StatLab Workshop: Intro to Matlab for Data Analysis and Statistical Modeling 11/29/2018.
Matlab tutorial course
L27. Divide and Conquer Algorithms
CS 175 Project in AI Discussion -- matlab
L13. More on Arrays Square Bracket Notation Subscripts
MATLAB Programming Basics Copyright © Software Carpentry 2011
‘If’ statements, relational operators, and logical operators
Announcements P3 due today
Nonparametric density estimation and classification
The lognormal distribution
Introduction to MATLAB 7
Arrays in Matlab UC Berkeley Fall 2004, E Copyright 2005, Andy Packard
Where We Stand At this point we know how to: Next thing:
CS100A Lecture 21 Previous Lecture This Lecture
Computer Simulation Lab
Empirical Distributions
Electrical and Computer Engineering Department SUNY – New Paltz
Presentation transcript:

L14. Arrays and Functions Functions with array parameters. Row and column vectors Built-Ins: length, zeros, std Revisit: rand, randn, max

Row and Column Vectors >> v = [1 2 3] v = 1 2 3 1 2 3 >> v = [1 ; 2 ; 3] 1 2 3 Observe semicolons

zeros( , ) >> x = zeros(3,1) x = >> x = zeros(1,3) 0 0 0

rand( , ) >> x = rand(3,1) x = 0.2618 0.7085 0.7839 0.9862 0.4733 0.9028

randn( , ) >> x = randn(1,3) x = 0.2877 -1.1465 1.1909 0.2877 -1.1465 1.1909 >> x = randn(3,1) 1.1892 -0.0376 0.3273

Normal Distribution with Zero Mean and Unit STD

Affirmations >> n = 1000000; >> x = randn(n,1); >> ave = sum(x)/n ave = -0.0017 >> standDev = std(x) standDev = 0.9989

length >> v = randn(1,5); >> n = length(v) >> u = rand(5,1); >> n = length(u) The length function doesn’t care about row or column orientation.

Augmenting Row Vectors >> x = [10 20] x = 10 20 >> x = [x 30] 10 20 30 >>

Augmenting Column Vectors >> x = [10;20] x = 10 20 >> x = [x ; 30] 30 Observe semicolons!

“Concatenating” Row Vectors >> x = [10 20] x = 10 20 >> y = [30 40 50] y = 30 40 50 >> z = [x y] z = 10 20 30 40 50

“Concatenating” Column Vectors >> x = [10 ; 20]; >> y = [30 ; 40 ; 50]; >> z = [ x ; y ] z = 10 20 30 40 50 Observe semicolons!

Application Plot sine across [0,4*pi] and use the fact that it has period 2pi. x = linspace(0,2*pi,100); y = sin(x); x = [x x+2*pi]; y = [y y]; plot(x,y)

x = linspace(0,2*pi,100); x = [ x x+2*pi ]; linspace(2*pi,4*pi,100)]

The Empty Vector x = x = [ ]; 1 for k=1:50 4 if floor(sqrt(k))==sqrt(k) x = [x; k]; end x = x x = 1 4 9 16 25 36 49

Array Hints & Errors

Dimension Mismatch Can’t add a row vector to a column vector >> x = [1;2] x = 1 2 >> y = [3 4] y = 3 4 >> z = x+y ??? Error using ==> plus Matrix dimensions must agree. Can’t add a row vector to a column vector

Not a Syntax Error >> x = rand(3) x = 0.9501 0.4860 0.4565 0.9501 0.4860 0.4565 0.2311 0.8913 0.0185 0.6068 0.7621 0.8214 You probably meant to say x = rand(1,3) or x = rand(3,1).

A Style Hint Assume n is initialized. a = zeros(1,n) for k=1:n a(k) = sqrt(k); end a = [ ]; for k=1:n a = [a sqrt(k)]; end Better because it reminds you of the size and shape of the array you set up.

Error: Out-ofRange Subscript >> x = [10 20 30] x = 10 20 30 >> c = x(4) ??? Index exceeds matrix dimensions.

This is OK… >> x = [ 10 20 30] x = 10 20 30 >> x(4) = 100 10 20 30 >> x(4) = 100 10 20 30 100

Forgot the Semicolon? >> x = randn(1000000,1)

Forgot the Semicolon? >> x = randn(1000000,1) Remember: ctrl-C

Question Time Is this the same as A. Yes B. No A = [ 1 ]; while(length(A) < 5) A = [length(A)+1 ; A]; end A = A Is this the same as A = linspace(1,5,5) ? A. Yes B. No

No! Linspace: 1 2 3 4 5 Fragment: 5 4 3 2 1

Question Time x = zeros(1,1); for k=1:3 x = [x x]; end y = x(7) Will this cause a subscript out of bounds error? A. Yes B. No

No! How x changes: After 1st pass: [0 0] After 2nd pass: [ 0 0 0 0 ] After 3rd pass: [0 0 0 0 0 0 0 0] So y = x(7) makes sense.

Polygon Transformations Functions & arrays

A Polygon Store xy-coordinates in vectors x and y. (x1,y1) (x2,y2)

Operation 1: Centralize Move a polygon so that the centroid of its vertices is at the origin.

Centralize Before After

Centralize Computes the vertices of the new polygon function [xNew,yNew] = Centralize(x,y) n = length(x); xBar = sum(x)/n; yBar = sum(y)/n; xNew = x-xBar; yNew = y-yBar; Computes the vertices of the new polygon Notice how length is used to figure out the size of the incoming vectors.

Operation 2: Normalize Shrink (enlarge) the polygon so that the vertex furthest from the (0,0) is on the unit circle.

Normalize Before After

Normalize the largest value in the vector. function [xNew,yNew] = Normalize(x,y) d = max(sqrt(x.^2 + y.^2)); xNew = x/d; yNew = y/d; Applied to a vector, max returns the largest value in the vector.

Operation 3: Smooth Obtain a new polygon by connecting the midpoints of the edges

Smooth

Midpoints (c,d) ( (a+c)/2 , (b+d)/2 ) (a,b)

Smooth function [xNew,yNew] = Smooth(x,y) n = length(x); xNew = zeros(n,1); yNew = zeros(n,1); for i=1:n Compute the mdpt of ith edge. Store in xNew(i) and yNew(i) end

xNew(1) = (x(1)+x(2))/2 yNew(1) = (y(1)+y(2))/2

xNew(2) = (x(2)+x(3))/2 yNew(2) = (y(2)+y(3))/2

xNew(3) = (x(3)+x(4))/2 yNew(3) = (y(3)+y(4))/2

xNew(4) = (x(4)+x(5))/2 yNew(4) = (y(4)+y(5))/2

xNew(5) = (x(5)+x(1))/2 yNew(5) = (y(5)+y(1))/2

xNew(5) = (x(5)+x(1))/2 yNew(5) = (y(5)+y(1))/2

Smooth for i=1:n xNew(i) = (x(i) + x(i+1))/2; yNew(i) = (y(i) + y(i+1))/2; end Will result in a subscript out of bounds error when i is n.

Smooth for i=1:n if i<n xNew(i) = (x(i) + x(i+1))/2; yNew(i) = (y(i) + y(i+1))/2; else xNew(n) = (x(n) + x(1))/2; yNew(n) = (y(n) + y(1))/2; end

Smooth for i=1:n-1 xNew(i) = (x(i) + x(i+1))/2; yNew(i) = (y(i) + y(i+1))/2; end xNew(n) = (x(n) + x(1))/2; yNew(n) = (y(n) + y(1))/2;

Proposed Simulation Create a polygon with randomly located vertices. Repeat: Centralize Normalize Smooth

2D Random Walk

Start in middle tile. Repeat until boundary reached: Pick a compass heading* at random. Move one tile in that direction. 1-by-1 tiles * North, East, South, West

Function that Returns the Path function [x y] = RandomWalk2D(N) k = 0; xc = 0; yc = 0; while abs(xc)<N && abs(yc)< N Take another hop. Update location (xc,yc). k = k + 1; x(k) = xc; y(k) = yc; end

k x(k) y(k) ------------- 1 0 -1 2 0 0 3 -1 0 4 0 0 5 0 1 6 1 1 7 1 0 8 1 1 0 1 : : :

if rand < .5 xc = xc + 1; % East else xc = xc - 1; % West end yc = yc + 1; % North yc = yc - 1; % Sounth

How Many Returns to (0,0)? % x and y are n-vectors. % How many times do we have % (x(k),y(k)) = (0,0)? m = 0; for k=1:length(x) if x(k)==0 && y(k)==0 m = m + 1; end