0% found this document useful (0 votes)
52 views5 pages

Lecture2013 04 04

This document summarizes a lecture about structures in MATLAB: 1) Structures can be used to package related data, like the x and y coordinates of a point. Fields are used to access the individual data elements. 2) Structure arrays are arrays whose elements are structures. All structures must have the same fields. This can represent things like an array of points. 3) Structures can have fields of different data types, like strings and doubles. Functions can take structures as arguments to abstract away things like multiple coordinate values. 4) Structure fields can also hold arrays, allowing things like an array of color values to represent colored objects like disks. Calculations can be done on structures by accessing the
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
52 views5 pages

Lecture2013 04 04

This document summarizes a lecture about structures in MATLAB: 1) Structures can be used to package related data, like the x and y coordinates of a point. Fields are used to access the individual data elements. 2) Structure arrays are arrays whose elements are structures. All structures must have the same fields. This can represent things like an array of points. 3) Structures can have fields of different data types, like strings and doubles. Functions can take structures as arguments to abstract away things like multiple coordinate values. 4) Structure fields can also hold arrays, allowing things like an array of color values to represent colored objects like disks. Calculations can be done on structures by accessing the
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

CS1112 Lecture 20

Previous Lecture:

Data are often related

Examples on cell arrays, file I/O, sort

Todays Lecture:

Structures Structure array (i.e., an array of structures) A structure with array fields

A point in the plane has an x coordinate and a y coordinate. If a program manipulates lots of points, there will be lots of xs and ys. Anticipate clutter. Is there a way to package the two coordinate values?

Announcements:

Project 5 Part A posted, due Thurs 4/11 Prelim 2 on Tues 4/16 at 7:30pm
Lecture 20

structure; xproperty/x-field; yproperty/y-field/ystructure


3 x p1 -1 x p2 7 y 4 y

Packaging affects thinking


Our Reasoning Level: P and Q are points. Compute the midpoint M of the connecting line segment. Behind the scenes we do this: Mx = (Px + Qx)/2 My = (Py + Qy)/2 Weve seen this before: functions are used to package calculations. This packaging (a type of abstraction) elevates the level of our reasoning and is critical for problem solving.

Example: a Point structure


% p1 is a Point p1.x= 3; p1.y= 4; % p2 is another Point p2.x= -1; p2.y= 7;

A Point has two propertiesfieldsx and y


Lecture 20 3 Lecture 20 4

Working with Point structures


p1.x=3; p1.y=4; p2.x=-1; p2.y=7;

Different ways to create a structure


% Create a struct by assigning field values

3 x p1

4 y

-1 x p2

7 y

p1.x= 3; p1.y= 4;
% Create a struct with built-in function

% Distance between points p1 and p2 D= sqrt((p1.x-p2.x)^2 + (p1.y-p2.y)^2);

p2 = struct(x,-1, y,7);

Note that p1.x, p1.y, p2.x, p2.y participate in the calculation as variablesbecause they are.
Lecture 20 5

p2 is a structure. The structure has two fields. Their names are x and y. They are assigned the values -1 and 7.
Lecture 20

3 x p1 -1 x p2

4 y

7 y

Lecture slides

CS1112 Lecture 20

first two fields stores strings and the last one has a double

must access the data within the name: (s.x)


Legal/Illegal maneuvers
Q = struct(x,5,y,6)

A structure can have fields of different types A = struct(name, New York, capital, Albany, Pop, 15.5)

R = Q S = (Q+R)/2

% Legal. R is a copy of Q % Illegal. Must access the % fields to do calculations Illegal. Args must be in pairs (field name followed by field value)

Can have combinations of string fields and numeric fields Arguments are given in pairs: a field name, followed by the value
Lecture 20 10

P = struct(x,3,y) % % % %

P = struct(x,3,y,[]) % Legal. Use [] as P.y = 4 % place holder


Lecture 20 11

y argument = empty vector ; must be pairs


Structures in functions function d = dist(P,Q) % P and Q are points (structure). % d is the distance between them. d = sqrt((P.x-Q.x)^2 + ... (P.y-Q.y)^2); Example Make Function
function P = MakePoint(x,y) % P is a point with P.x and P.y % assigned the values x and y. P = struct('x',x,'y',y); Then in a script or some other function a= 10; b= rand; Pt= MakePoint(a,b); % create a point struct % according to definition % in MakePoint function
12 Lecture 20 13

Lecture 20

without packaging, you need 4 parameters, xcoord in P/Q; y-coord in P/Q


Another function that has structure parameters function DrawLine(P,Q,c) % P and Q are points (structure). % Draws a line segment connecting % P and Q. Color is specified by c. plot([P.x Q.x],[P.y Q.y],c)

randn: bell curve normal


Pick Up Sticks
s = 'rgbmcy'; for k=1:100 P = MakePoint(randn,randn); Q = MakePoint(randn,randn); c = s(ceil(6*rand)); DrawLine(P,Q,c) end Generates two random points and connect them using one of six colors chosen randomly.

Lecture 20

14

Lecture 20

16

Lecture slides

put color as string; when you need random color... generate random number. ceil(6*rand),

CS1112 Lecture 20

Structure Arrays

An Array of Points

An array whose components are structures All the structures must be the same (have the same fields) in the array Example: an array of points (point structures)
.5 x .86 y 1.5 x .91 y .4 x .28 y 2.5 x 1.8 y

.50 x

.86 y

P(1)
P(1) P(2)
Lecture 20

P(3)

P(4)
17

P(1) = MakePoint(.50,.86)
Lecture 20 18

An Array of Points

Function returning an array of points (point structures)

function P = CirclePoints(n)
%P is array of n point structs; the %points are evenly spaced on unit circle

-.50 x

.86 y

P(2) P(2) = MakePoint(-.50,.86)


Lecture 20 19

theta = 2*pi/n; for k=1:n c = cos(theta*k); s = sin(theta*k); P(k) = MakePoint(c,s); end


Lecture 20 24

Example: all possible triangles


Place n points uniformly around the unit circle. Draw all possible unique triangles obtained by connecting these points 3-at-a-time.
(i,j,k)= ( 1, 2, 4)
2 1

(i,j,k)= ( 1, 2, 6)
2 1

function DrawTriangle(U,V,W,c) % Draw c-colored triangle; % triangle vertices are points U, % V, and W. fill([U.x V.x W.x], ... [U.y V.y W.y], c)

5
Lecture 20

5
25 Lecture 20 26

Lecture slides

CS1112 Lecture 20

(i,j,k)= ( 1, 3, 6)
2 1

(i,j,k)= ( 1, 4, 5)
2 1

Bad! i, j, and k should be different, and there should be no duplicates


% Given P, an array of point structures for i=1:n for j=1:n for k=1:n DrawTriangle(P(i),P(j),P(k),m) pause DrawTriangle(P(i),P(j),P(k),k) end end end
Lecture 20 28

The following triangles are the same: (1,3,6), (1,6,3), (3,1,6), (3,6,1), (6,1,3), (6,3,1)
Lecture 20 27

All possible (i,j,k) combinations but avoid duplicates. Loop index values have this relationship i < j < k
i j k

All possible (i,j,k) combinations but avoid duplicates. Loop index values have this relationship i < j < k

123 124 125 126 134 135 136 145 146 156

234 235 236 245 246 256

345 346 356

456

i = 4

i = 3
for i=1:n-2 for j=i+1:n-1 for k=j+1:n disp([i j k]) end end end
Lecture 20 29

i = 2

for i=1:n-2 for j=i+1:n-1 for k=j+1:n % Draw triangle with % vertices P(i),P(j),P(k) end end end
Lecture 20 31

i = 1

All possible triangles


% Drawing on a black background for i=1:n-2 for j=i+1:n-1 for k=j+1:n DrawTriangle( P(i),P(j),P(k),'m') DrawPoints(P) pause DrawTriangle(P(i),P(j),P(k),'k') end end end
Lecture 20 32

Still get the same result if all three loop indices end with n? A: Yes B: No
i j k

123 124 125 126 134 135 136 145 146 156

234 235 236 245 246 256

345 346 356

456

i = 4

i = 3
for i=1:n for j=i+1:n for k=j+1:n disp([i j k]) end end end
Lecture 20 34

i = 2

i = 1

Lecture slides

it doesn't change because the loop is still k=j+1:n, it won't go

CS1112 Lecture 20

Structures with array fields


Lets develop a structure that can be used to represent a colored disk. It has four fields: xc: yc: r: c: x-coordinate of center y-coordinate of center radius rgb color vector

Example: Averaging two disks

D2 D1 D

Examples: D1 = struct(xc,1,yc,2,r,3, c,[1 0 1]); D2 = struct(xc,4,yc,0,r,1, c,[.2 .5 .3]);


Lecture 20 36

Lecture 20

39

color can be a vector;


Example: compute average of two disks
% D1 and D2 are disk structures. % Average is: r = (D1.r + D2.r) /2; xc = (D1.xc + D2.xc)/2; yc = (D1.yc + D2.yc)/2; c = (D1.c + D2.c) /2; % The average is also a disk D = struct(xc,xc,ycyc,r,r,c,c)

How do you assign to g the green-color component of disk D?


D= struct(xc,3.5, yc,2, ... r,1.0, c,[.4 .1 .5]) A: g = D.g; B: g = D.c.g; C: g = D.c.2; D: g = D.c(2); E: other
Lecture 20 41

Lecture 20

40

A structures field can hold a structure A = MakePoint(2,3) B = MakePoint(4,5) L = struct(P,A,Q,B) This could be used to represent a line segment with endpoints P and Q, for instance Given the MakePoint function to create a point structure, what is x below? x = L.P.y;
A: 2 B: 3 C: 4 D: 5
Lecture 20

E: error
42

Lecture slides

You might also like