Computer Science 121 - PowerPoint PPT Presentation

1 / 28
About This Presentation
Title:

Computer Science 121

Description:

How to access individual elements of a collection ... smiths(1,1) = 'Emily' ??? Subscripted assignment dimensions blah blah blah I hate you! ... – PowerPoint PPT presentation

Number of Views:23
Avg rating:3.0/5.0
Slides: 29
Provided by: csW7
Category:

less

Transcript and Presenter's Notes

Title: Computer Science 121


1
Computer Science 121
  • Scientific Computing
  • Winter 2007
  • Chapter 4
  • Collections and Indexing

2
Collections and Indexing
  • We've seen two kinds of collection
  • Vector (sequence of numbers)
  • Text/string (sequence of characters)
  • Two main issues
  • How to access individual elements of a collection
  • How to group related elements together (even when
    their types differ)

3
4.1 Indexing
  • Consider census data for a single street
  • gtgt elmstreet 3 5 2 0 4 5 1
  • Matlab can give us various stats about this data
  • gtgt sum(elmstreet) total residents
  • ans 20
  • gtgt mean(elmstreet) mean household size
  • ans 2.8571
  • gtgt max(elmstreet) largest household size
  • ans 5
  • gtgt min(elmstreet) smallest household size
  • ans 0

4
4.1 Indexing
  • Some data may be bogus
  • gtgt min(elmstreet) smallest size
  • ans 0
  • Need to know bogus values, and where they live
  • In general, need to know
  • Value of an element
  • Position (index) of the element

5
4.1 Indexing find
  • Recall boolean operators on vectors
  • gtgt elmstreet 0
  • ans 0 0 0 1 0 0 0
  • The find operator tells us the indices of the
    non-zero elements
  • gtgt find(elmstreet 0)
  • ans 4
  • gtgt find(elmstreet gt 2)
  • ans 1 2 5 6
  • gtgt find(elmstreet lt 0)
  • ans

6
4.1 Indexing First and last Elements
  • First element has index 1 (unlike Java, C)
  • gtgt elmstreet
  • ans 3 5 2 0 4 5 1
  • gtgt elmstreet(1)
  • ans 3
  • Last element can be referenced by special end
    index
  • gtgt elmstreet(end)
  • ans 1

7
4.1 Indexing Subsequences
  • Can use a vector of indices instead of a single
    index
  • gtgt elmstreet(1 3 5)
  • ans 3 2 4
  • gtgt elmstreet(1 3 5) -1
  • elmstreet -1 5 -1 0 -1 5 1

8
4.1 Indexing Extending a Vector
  • Use end1 to add an element at end of vector
  • gtgt elmstreet
  • ans 3 5 2 0 4 5 1
  • gtgt elmstreet(end1) 8
  • elmstreet 3 5 2 0 4 5 1 8
  • If we go beyond end, Matlab fills gaps with 0's
  • gtgt elmstreet(12) 9
  • elmstreet 3 5 2 0 4 5 1 8 0 0 0 9

9
Fibonacci Redux
  • With vectors, we only need a single variable,
    line (versus three) to do Fibonacci
  • gtgt fib 0 1
  • gtgt fib(end1) fib(end) fib(end-1)
  • fib 0 1 1
  • gtgt fib(end1) fib(end) fib(end-1)
  • fib 0 1 1 2
  • gtgt fib(end1) fib(end) fib(end-1)
  • fib 0 1 1 2 3

etc.
10
4.2 Matrices
  • Lots of data are best represented as tables

11
4.2 Matrices
  • We can store such data in a matrix

gtgt elmstreet 3 2 1 35000
5 2 3 41000 2 1 1 25000
2 2 0 56000 4 2 2 62000
5 3 2 83000 1 1 0 52000
  • Household index is implicit (as row number)

12
4.2 Matrices
  • Like length operator for vectors, size operator
    reports size of matrix

gtgt size(elmstreet) ans 7 4
  • With matrices, we use two indices (instead of
    one) for referencing values

gtgt elmstreet(3, 4) ans 25000 gtgt elmstreet(4,
3) ans 0
13
4.2 Matrices
  • As with vectors, can access part of matrix by
    using a vector of indices

gtgt elmstreet(4 5 7, 4) ans 56000 62000 52000
  • Grab a whole row using colon notation

gtgt elmstreet(1, ) whole first row ans 3 2 1
35000
14
4.2 Matrices
  • Also works for columns

gtgt elmstreet(, 1) whole first col ans
3 5 2 2 4 5 1
15
4.2 Matrices
  • Recall that a scalar is a length-one vector

gtgt length(7) ans 1
  • A scalar is also a one-by-one matrix

gtgt size(7) ans 1 1
16
  • As with a vector, we can do operations on a
    scalar and a matrix

gtgt 1 2 3 4 5 6 7 8 9 2 ans 2 4 6
8 10 12 14 16 18
17
  • ... and element-by-element on two matrices

gtgt a 1 2 3 4 5 6 7 8 9 gtgt b 1 0 1 0 0
1 1 1 0 gtgt a . b ans 1 0 3 0 0 6
7 8 0
18
  • Of course, matrices must be same size for .

gtgt 1 2 3 4 5 6 7 8 9 . 3 4 5 6 ??? Error
using gt times Matrix dimensions must
agree... You eediot!
19
  • We can get a lot of mileage by combining colon
    and other operations

gtgt children elmstreet(, 3) children 1 3 1 0
2 2 0 gtgt nokidshouses find(children
0) nokidshouses 4 7 gtgt incomenokids ...
elmstreet(nokidshouses, 4) incomenokids
56000 52000 gtgt mean(incomenokids) ans
55000
20
  • Some matrix operations yield a vector

gtgt r,c ... find(elmstreet gt3 elmstreet
lt 5)
r 2 5 6 c 1 1 1
21
4.3 Mixed Data Types
  • Not all data is (are?) numerical

22
4.3 Mixed Data Types
  • We can't put text into a matrix

gtgt smiths(1,1) 'Emily' ??? Subscripted
assignment dimensions blah blah blah I hate
you!!!
  • Because how do we know that next element
    ('George') will be same size?
  • Old-school solution was to enforce fixed sizes
    for everything led to Y2K problem!

23
4.3 Mixed Data Types Structures
  • Structures (a.k.a. Data Structures) allow us to
    put different types of data into the same
    collection

gtgt pt.x 3 pt x 3 gtgt pt.name
'Homestar' pt x 3 name Homestar
24
4.3 Mixed Data Types Structures
  • Structure arrays contain structures with similar
    contents

gtgt people(3).name 'StrongBad' gtgt people(3).IQ
80 people 1x3 struct array with fields
name IQ
25
4.3 Mixed Data Types Structures
  • Matlab fills in missing array members with empty
    structures

gtgt people(1) ans name IQ

26
4.3 Mixed Data Types Cell Arrays
  • A cell array is a matrix that can contain any
    type of data

gtgt people 'Homestar', 60 ...
'StrongBad', 80 ... 'Marzipan',
100
people 'Homestar' 60
'StrongBad' 80 'Marzipan' 100
27
4.3 Mixed Data Types Cell Arrays
  • Cell array is referenced using curly braces ,

gtgt people1, ans Homestar ans 60

28
4.3 Mixed Data Types Cell Arrays
  • But if we want to store output values, we use
    ordinary parens

gtgt hs people1, ??? Illegal right hand side
in assignment. Too many elements. gtgt hs
people(1,)

hs 'Homestar' 60
Write a Comment
User Comments (0)
About PowerShow.com