0% found this document useful (0 votes)
51 views31 pages

Lesson 7: Data Types: Akos Ledeczi and Mike Fitzpatrick

The document discusses data types in MATLAB. It explains that MATLAB supports many different data types including doubles, singles, integers, strings, cells, and structs. Each data type has a defined set of values and operations. Cells allow for heterogeneous data storage since each element can contain a different type, while structs group related data into fields that can also vary in type.

Uploaded by

Kamlesh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
51 views31 pages

Lesson 7: Data Types: Akos Ledeczi and Mike Fitzpatrick

The document discusses data types in MATLAB. It explains that MATLAB supports many different data types including doubles, singles, integers, strings, cells, and structs. Each data type has a defined set of values and operations. Cells allow for heterogeneous data storage since each element can contain a different type, while structs group related data into fields that can also vary in type.

Uploaded by

Kamlesh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 31

Lesson 7: Data Types

by

Akos Ledeczi and Mike Fitzpatrick


 Real numbers in mathematics:
◦ Can be infinitely large
◦ Have infinitely fine resolution
 Computers: Finite memory
◦ Upper limit on the largest number that can be
represented
◦ Lower limit on the absolute value of any non-zero
number
 The set of values that can be represented
by a MATLAB variable is finite.
 MATLAB: many different data types
 A data type is defined by:
◦ Set of values
◦ Set of operations that can be performed on those values
 MATLAB:
◦ All elements of a given array must be of the same type
◦ Elementary type
 Type of a MATLAB array is defined by
◦ Number of dimensions
◦ Size in each dimension
◦ Elementary type
 double
◦ Default type in MATLAB
◦ Floating point representation
-2
 Example: 12.34 = 1234 * 10
 Mantissa and exponent
◦ 64 bits (8 bytes)
 single
◦ 32-bit floating point
 Integer types
Signed, unsigned
8-, 16-, 32-, 64-bit long
Inf:
“Infinity”
NaN:
“Not-a-number”
 Type check:
◦ class
◦ isa
>> isa(x,’double’)
 Range check:
◦ intmax, intmin
◦ realmax, realmin
>> intmax(’uint32’)
 Conversion:
◦ Name of function = name of desired data type
◦ int8(x), uint32(x), double(x), etc.
 Arithmetic operators
◦ Operands of the same data type: No problem
◦ Different data types:
“mixed-mode arithmetic”
Many rules and restrictions
 Relational operators
◦ Different data types are always allowed
◦ Result is always of logical type
 Text: string
 We have used them already:
◦ Argument to fprintf and other functions
 String: vector of char-s
 Numerical type
◦ Uses an encoding scheme
◦ Each character is represented by a number
◦ ASCII scheme
 American Standard Code
for Information
Interchange
 Developed in the1960’s
 7 bits, 128 characters:
◦ Latin alphabet
◦ Digits
◦ Punctuation
◦ Special characters
 Newer schemes with far
more characters
 ASCII is a subset of them
 Print out the visible characters of the
ASCII table:

function char_codes
for ii = 33:126
fprintf('%s',char(ii));
end
fprintf('\n');
 An array must be homogeneous:
◦ It cannot contain elements of multiple types.
 A struct can be heterogeneous:
◦ It can contain multiple types.
 A struct is different from an array:
◦ fields, not elements
◦ field names, not indices
◦ Fields in the same struct can have different types.
 Versatility inside:
◦ A field of a struct can contain another struct.
>> r.ssn = 12345678
r =
ssn: 12345678
>> class(r)
ans =
struct
>> class(r.ssn)
ans =
double
>> r.name = 'Homer Simpson'
r =
ssn: 12345678
name: 'Homer Simpson‘
>> r.address.street = '742 Evergreen Terrace'
r =
ssn: 12345678
name: 'Homer Simpson'
address: [1x1 struct]
 An array must be homogeneous:
◦ It cannot contain elements of multiple types.
 A struct can be heterogeneous:
◦ It can contain multiple types.
 A struct is different from an array:
◦ fields, not elements
◦ field names, not indices
◦ Fields in the same struct can have different types.
 Versatility inside:
◦ A field of a struct can contain another struct.
◦ Structs can hold arrays, and arrays can hold structs.
 How to store a page of text?
◦ Each line should be a separate string
◦ Cannot use an array of chars:
Each line would have to have the same length
◦ A vector of objects with each referring to one line
 Pointer
◦ Each variable (scalar, vector, array, etc.) is stored in
the computer memory.
◦ Each memory location has a unique address.
◦ A pointer is a variable that stores an address.
◦ MATLAB calls a pointer a “cell”.
 MATLAB has a restrictive pointer model
◦ Strict rules on what can be done with cells
◦ Harder to make mistakes
 But it is a powerful way to
store heterogeneous data
◦ Cell arrays
◦ Used more frequently than structs
 New syntax:
◦ To access the data a cell points to, use: { }
>> p = cell(2,3)
p =
[] [] [] p
[] [] []
>>

[]
>> p = cell(2,3)
p =
[] [] [] p
[] [] []
>> p{2,1} = pi
p =
[] [] []
[3.14] [] [] 3.14
>>

[]
>> p = cell(2,3)
p =
[] [] [] p
[] [] []
-17
>> p{2,1} = pi
p =
[] [] []
[3.14] [] [] 3.14
>> p{1,1} = int8(-17)
p =
[-17] [] []
[]
[3.14] [] []
>>
>> p = cell(2,3)
p =
[] [] [] p
[] [] []
-17
>> p{2,1} = pi
p =
[] [] []
[3.14] [] [] 3.14
>> p{1,1} = -17
p =
[-17] [] []
[]
[3.14] [] []
>> p{2,2} = 'Awesome'
P =
[-17] [] []
[3.14] 'Awesome'[] ‘A’ ‘w’ ‘e’ ‘s’ ‘o’ ‘m’ ‘e’
>> p{2,3} = [2 4; 6 8; 10 12]
P =
[-17] [] []
[3.14] ‘Awesome’[3x2 double] p
-17
>>

2 4
3.14
6 8

[] 10 12

‘A’ ‘w’ ‘e’ ‘s’ ‘o’ ‘m’ ‘e’


>> p{2,3} = [2 4; 6 8; 10 12]
P =
[-17] [] []
[3.14] ‘Awesome’[3x2 double] p 18 24

>> p{1,3} = sum(p{2,3}); -17


>>
2 4

3.14
6 8

[] 10 12
>> p{2,3} = [2 4; 6 8; 10 12]
P = Inf
[-17] [] []
[3.14] ‘Awesome’[3x2 double] p 18 24

>> p{1,3} = sum(p{2,3}); -17


>> P{1,2} = 1/0;
>> 2 4

3.14
6 8

[] 10 12
>> p{2,3} = [2 4; 6 8; 10 12]
P = Inf
[-17] [] []
[3.14] ‘Awesome’[3x2 double] p 18 24

>> p{1,3} = sum(p{2,3}); -17


>> P{1,2} = 1/0;
>> class(p) 2 4
ans =
cell 3.14
>> 6 8

[] 10 12
>> p{2,3} = [2 4; 6 8; 10 12]
P = Inf
[-17] [] []
[3.14] ‘Awesome’[3x2 double] p 18 24

>> p{1,3} = sum(p{2,3}); -17


>> P{1,2} = 1/0;
>> class(p) 2 4
ans =
cell 3.14
>> class(p{1,2}) 6 8
ans =
double [] 10 12
>>
>> p{2,3} = [2 4; 6 8; 10 12]
P = Inf
[-17] [] []
[3.14] ‘Awesome’[3x2 double] p 18 24

>> p{1,3} = sum(p{2,3}); -17


>> P{1,2} = 1/0;
>> class(p) 2 4
ans =
cell 3.14
>> class(p{1,2}) 6 8
ans =
double [] 10 12
>> class(p(1,2))
ans =
cell
>>
‘A’ ‘w’ ‘e’ ‘s’ ‘o’ ‘m’ ‘e’
>> p{2,3}(3,2) Inf
ans =

>>
12 p 18 24

-17

2 4
3.14
6 8

[] 10 12

‘A’ ‘w’ ‘e’ ‘s’ ‘o’ ‘m’ ‘e’

You might also like