Presentation is loading. Please wait.

Presentation is loading. Please wait.

Insight Through Computing 14. Still More on Arrays Functions with array parameters. Row and column vectors Built-Ins: length, zeros, std Revisit: rand,

Similar presentations


Presentation on theme: "Insight Through Computing 14. Still More on Arrays Functions with array parameters. Row and column vectors Built-Ins: length, zeros, std Revisit: rand,"— Presentation transcript:

1 Insight Through Computing 14. Still More on Arrays Functions with array parameters. Row and column vectors Built-Ins: length, zeros, std Revisit: rand, randn, max

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

3 Insight Through Computing zeros(, ) >> x = zeros(3,1) x = 0 >> x = zeros(1,3) x = 0 0 0

4 Insight Through Computing rand(, ) >> x = rand(3,1) x = 0.2618 0.7085 0.7839 >> x = rand(1,3) x = 0.9862 0.4733 0.9028

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

6 Insight Through Computing Normal Distribution with Zero Mean and Unit STD

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

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

9 Insight Through Computing Augmenting Row Vectors >> x = [10 20] x = 10 20 >> x = [x 30] x = 10 20 30 >>

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

11 Insight Through Computing “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

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

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

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

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

16 Insight Through Computing Array Hints & Errors

17 Insight Through Computing Dimension Mismatch >> 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

18 Insight Through Computing Not a Syntax Error >> x = rand(3) x = 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).

19 Insight Through Computing 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.

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

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

22 Insight Through Computing Forgot the Semicolon? >> x = randn(1000000,1)

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

24 Insight Through Computing Question Time 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

25 Insight Through Computing No! Linspace: 1 2 3 4 5 Fragment: 5 4 3 2 1

26 Insight Through Computing 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

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

28 Insight Through Computing Polygon Transformations Functions & arrays

29 Insight Through Computing A Polygon (x 4,y 4 ) (x 1,y 1 ) (x 3,y 3 ) (x 2,y 2 ) (x 5,y 5 ) Store xy- coordinates in vectors x and y.

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

31 Insight Through Computing Before After Centralize

32 Insight Through Computing Centralize 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.

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

34 Insight Through Computing Before After Normalize

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

36 Insight Through Computing Operation 3: Smooth Obtain a new polygon by connecting the midpoints of the edges

37 Insight Through Computing Smooth

38 Insight Through Computing Midpoints (a,b) ( (a+c)/2, (b+d)/2 ) (c,d)

39 Insight Through Computing 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 Smooth

40 Insight Through Computing (x 4,y 4 ) (x 1,y 1 ) (x 3,y 3 ) (x 2,y 2 ) (x 5,y 5 ) xNew(1) = (x(1)+x(2))/2 yNew(1) = (y(1)+y(2))/2

41 Insight Through Computing (x 4,y 4 ) (x 1,y 1 ) (x 3,y 3 ) (x 2,y 2 ) (x 5,y 5 ) xNew(2) = (x(2)+x(3))/2 yNew(2) = (y(2)+y(3))/2

42 Insight Through Computing (x 4,y 4 ) (x 1,y 1 ) (x 3,y 3 ) (x 2,y 2 ) (x 5,y 5 ) xNew(3) = (x(3)+x(4))/2 yNew(3) = (y(3)+y(4))/2

43 Insight Through Computing (x 4,y 4 ) (x 1,y 1 ) (x 3,y 3 ) (x 2,y 2 ) (x 5,y 5 ) xNew(4) = (x(4)+x(5))/2 yNew(4) = (y(4)+y(5))/2

44 Insight Through Computing (x 4,y 4 ) (x 1,y 1 ) (x 3,y 3 ) (x 2,y 2 ) (x 5,y 5 ) xNew(5) = (x(5)+x(1))/2 yNew(5) = (y(5)+y(1))/2

45 Insight Through Computing (x 4,y 4 ) (x 1,y 1 ) (x 3,y 3 ) (x 2,y 2 ) (x 5,y 5 ) xNew(5) = (x(5)+x(1))/2 yNew(5) = (y(5)+y(1))/2

46 Insight Through Computing 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

47 Insight Through Computing 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

48 Insight Through Computing 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; Smooth

49 Insight Through Computing Proposed Simulation Create a polygon with randomly located vertices. Repeat: Centralize Normalize Smooth

50 Insight Through Computing

51 2D Random Walk

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

53 Insight Through Computing 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 Function that Returns the Path

54 Insight Through Computing 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 9 0 1 : : :

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

56 Insight Through Computing 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


Download ppt "Insight Through Computing 14. Still More on Arrays Functions with array parameters. Row and column vectors Built-Ins: length, zeros, std Revisit: rand,"

Similar presentations


Ads by Google