cmpsc 201
DESCRIPTION
CMPSC 201. Other Kinds of Arrays. Kinds of Data Stored in MATLAB Matrices. Symbolic Objects - Symbolic Toolbox. Character. Logical. Numeric. Integer. Floating Point. multiple signed integer types. multiple unsigned integer types. single precision. double precision. complex. real. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/1.jpg)
CMPSC 201
![Page 2: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/2.jpg)
Other Kinds of Arrays
Kinds of Data Stored in MATLAB Matrices
NumericCharacter LogicalSymbolic Objects - Symbolic Toolbox
Integer Floating Point
multiple signed integer types
multiple unsigned integer types
single precision
double precision
complex real
![Page 3: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/3.jpg)
In this chapter we’ll learn about…
• The different kinds of data used in MATLAB
• Create and use both numeric and character arrays
• Create multidimensional arrays, and access data in those arrays
• Create and use cell and structure arrays
![Page 4: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/4.jpg)
Section 10.1Data Types
• The primary data type (also called a class) in MATLAB is the array or matrix
• Within the array, MATLAB supports a number of different secondary data types (classes)– The default is a double precision floating point
number
![Page 5: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/5.jpg)
MATLAB’s arrays can store different types of data
Kinds of Data Stored in MATLAB Matrices
NumericCharacter LogicalSymbolic Objects - Symbolic Toolbox
Integer Floating Point
multiple signed integer types
multiple unsigned integer types
single precision
double precision
complex real
![Page 6: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/6.jpg)
There are a variety of array types to store the data
MATLAB Array Types
Character Arrays
Floating Point
single precision
double precision
Logical Arrays
Numeric Arrays
Symbolic Arrays
Cell Arrays
Structure Arrays
Other types, including user defined and JAVA types
Cell and Structure arrays can store different types of data in the same array
Integer
multiple signed integer types
multiple unsigned integer types
Most of these arrays can only hold information of one data type
![Page 7: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/7.jpg)
• The difference between array types and data types may be confusing
• Consider the following analogy
![Page 8: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/8.jpg)
There are lots of different places you could
store your wealth
They correspond to the array types
![Page 9: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/9.jpg)
There are lots of different kinds of wealth you
might store in a bank
They correspond to the data types
![Page 10: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/10.jpg)
Numeric Data Types
• Numeric data is stored in numeric arrays• The default data type is double precision floating
point• Every time you enter a number into MATLAB, the
program assumes you’ve entered a double• MATLAB conforms to the IEEE standards that
specify the meaning of the double data type
![Page 11: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/11.jpg)
When you define numeric values they default to doubles
Each value in a double array needs 8 bytes of memory to store
![Page 12: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/12.jpg)
There are 6 values in the C array – therefore it requires 6 x 8 = 48 bytes of memory
![Page 13: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/13.jpg)
Value limitations
• The biggest number you can store in a double can be found using the realmax function
• The smallest number you can store in a double can be found using the realmin function
![Page 14: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/14.jpg)
Single Precision floating point numbers
• This data type is a new feature in MATLAB 7
• Uses half the storage space of a double
• Each value requires– 4 bytes = 32 bits
![Page 15: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/15.jpg)
It’s necessary to use the single function to change the value of 5 (which is a double by default) into a single
The grid symbol indicates a numeric array – double, single or integer
![Page 16: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/16.jpg)
Value limitations
• Since single precision numbers are allocated only half as much storage space, they can not cover as large a range of values as double numbers – The biggest number you can store in a single can be
found using the realmax(‘single’) function– The smallest number you can store in a double can be
found using the realmin(‘single’) function
![Page 17: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/17.jpg)
• Engineers will rarely need to convert to single precision numbers, because – today’s computers
have plenty of storage space for most applications,
– and will execute most of the problems we pose in extremely short amounts of time
![Page 18: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/18.jpg)
When would you use the short data type instead of double values?
• In some numerical analysis applications you may be able to improve the run time of a long problem by changing from double to single precision
• However, round off error becomes more of a problem.
![Page 19: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/19.jpg)
Consider the harmonic series
1/1 1/ 2 1/ 3 1/ 4 1/ 5 1/ 6 ... 1/ + ...n
1/1
nn Shorthand for the harmonic series
This series diverges -it just keeps getting bigger the more terms you add
![Page 20: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/20.jpg)
0 2000 4000 6000 8000 100006
8
10
12
14
16
18Comparison of Double and Single Precision Calculations
Number of steps*1000
Sum
of
the
Har
mon
ic S
erie
s
For large numbers of steps the results are different using double and single data types
double
single
![Page 21: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/21.jpg)
Why?
• When the series gets big enough the value of 1/n is so small that the computer can’t distinguish it from 0
• This occurs at the value of realmin• Since doubles can differentiate between smaller
numbers than singles the summation is valid for more steps
![Page 22: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/22.jpg)
Integers• Integer arrays are new to MATLAB 7• Integers are stored in integer arrays
MATLAB Integer Types
8-bit signed integer
int8 8-bit unsigned integer uint8
16-bit signed integer
int16 16-bit unsigned integer
uint16
32-bit signed integer
int32 32-bit unsigned integer
uint32
64-bit signed integer
int64 64-bit unsigned integer
uint64
Remember that 8 bits = 1 byte
Each of these types require a different amount of storage
![Page 23: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/23.jpg)
You can determine the number of possible values allowed in the integer data type
• Each of the integer types uses a different amount of storage, and can thus save different ranges of values
• Determine the size range using– intmax and intmin
![Page 24: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/24.jpg)
![Page 25: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/25.jpg)
When do we use integers
• Integer arrays can be used to store image information
• These arrays are often very large, but there are a limited number of colors used in many of these images to create the picture.
• Storing them as unsigned integer arrays reduces the storage requirement dramatically.
![Page 26: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/26.jpg)
Complex numbers
• Default is double
• Twice as much storage is needed because the real and imaginary components must be stored
• Could also be stored as a single or integer
![Page 27: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/27.jpg)
Character and String Data
• Character arrays store character information
• A character array is produced from a string
![Page 28: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/28.jpg)
Each character is a separate element in the array
![Page 29: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/29.jpg)
The fifth element of the H array is the letter y
![Page 30: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/30.jpg)
• Any string represents a character array in MATLAB
• Each character requires 2 bytes of storage
![Page 31: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/31.jpg)
Spaces are characters too
The ‘abc’ symbol indicates a character array
![Page 32: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/32.jpg)
How are characters stored in MATLAB?
• All information in computers is stored using a series of zeros and ones – ASCII – Used in small computers– EBCDIC – Used in mainframes and
super computers
• You can think of this list of 0’s and 1’s as a base two number
![Page 33: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/33.jpg)
Comparison between base 2 and base 10
Base 2 ”binary” Base 10 ”decimal”
1 1
10 2
11 3
100 4
101 5
110 6
111 7
1000 8
![Page 34: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/34.jpg)
• Every character stored using ASCII or EBCDIC code has both a binary representation and a decimal equivalent
• When we ask MATLAB to change a character to a double, the number we get is the decimal equivalent in the ASCII coding system
![Page 35: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/35.jpg)
Use the double function to convert to a double precision floating point number
Use char to convert a number to a character
MATLAB includes functions to change data types
![Page 36: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/36.jpg)
You shouldn’t mix data types in calculations or in arrays
If you attempt to create an array with both character and numeric data, the array defaults to all characters
The square symbol is a character with a numeric equivalent of 3
![Page 37: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/37.jpg)
If you try to perform arithmetic with a combination of character and numeric data, MATLAB converts the character to its decimal equivalent
Remember that a has a decimal equivalent of 97
![Page 38: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/38.jpg)
Symbolic Data
• Covered in more detail in a separate chapter
• The symbolic toolbox uses symbolic data to perform symbolic algebraic calculations
• Create a symbolic variable using the sym function
![Page 39: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/39.jpg)
Storage requirements for symbolic vary, depending on how big the expression is.
![Page 40: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/40.jpg)
Symbolic variables can be grouped into arrays, just like other data types
The cube symbol indicates a symbolic array
![Page 41: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/41.jpg)
Logical Data Types
• Logical data can have only one of two values– True– False
• MATLAB uses – 0 to represent false and– 1 to represent true
![Page 42: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/42.jpg)
Although a logical array contains the information true and false, MATLAB represents it as 0 and 1
The check mark indicates a logical array
We don’t usually create logical arrays by entering true and false values. Usually they are the result of logical operations
![Page 43: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/43.jpg)
Notice that x and y are numeric arrays and z is a logical array
We can interpret this result to mean that x>y is false for elements 1 and 3, and true for elements 2,3 and 5
These arrays are used in logical functions, and are not usually even seen by the user.
![Page 44: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/44.jpg)
Sparse Arrays
• Both double precision arrays and logical arrays can be stored in either full matrices, or as sparse matrices.
• Sparse matrices are “sparsely populated”, meaning many or most of the values in the array are zero – Identity matrices are examples of sparse matrices
![Page 45: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/45.jpg)
Sparse matrices require less space than the corresponding numeric or logical matrices
• If we store sparse arrays in the full matrix format, it takes 8 bytes of storage for every data value, whether they are zeros or not
• The sparse matrix format only stores the non-zero values, and remembers where they are – this strategy saves a lot of space
![Page 46: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/46.jpg)
Compare the size of N and P N is a 1000x1000 identity matrix
P is the same matrix, stored using the sparse strategy
![Page 47: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/47.jpg)
Section 10.2Multidimensional Arrays
• Sometimes you may want to store data in multidimensional arrays– Rows– Columns– Pages– Additional dimensions are possible
![Page 48: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/48.jpg)
Multidimensional arrays are grouped into pages
rows
columns
pages
![Page 49: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/49.jpg)
Imagine that you would like to store each of these 4 two-dimensional arrays into 1 three-dimensional array with four pages.
Page 1
Page 2
Page 3
Page 4
![Page 50: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/50.jpg)
You must define each page separately. Read the first definition statement as
“all the rows, all the columns, in page 1”
![Page 51: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/51.jpg)
![Page 52: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/52.jpg)
Section 10.3Creating Character Arrays
• We can create two dimensional character arrays only if the number of elements in each row is the same
![Page 53: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/53.jpg)
This statement doesn’t work, because the number of characters in each line is different
![Page 54: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/54.jpg)
The char functions “pads” the array with blanks. Notice that the array size is 6 rows by 7 columns
Character arrays can store any of the characters defined in the ASCII coding scheme – including the symbols for numbers
![Page 55: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/55.jpg)
Character arrays can only hold character data
• We can take advantage of this to create tables that look like they include both character and numeric information, but really are composed of just characters
• The number 1 is different from the character 1
![Page 56: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/56.jpg)
Let’s combine an array of test scores and names
• Test scores– 98
– 84
– 73
– 88
– 95
– 100
• Names– Holly
– Steven
– Meagan
– David
– Michael
– HeidiNumeric information Character information
![Page 57: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/57.jpg)
When we tried to store the two different data types into the same array, MATLAB interpreted the numbers as the ASCII equivalent of characters
Notice that table is a character array
![Page 58: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/58.jpg)
• In order to store the two different data types in the same array, we’ll need to convert the numbers into the corresponding characters
• num2str
![Page 59: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/59.jpg)
The num2str function converted the array of scores into the corresponding characters
![Page 60: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/60.jpg)
Creation of file names
• A useful application of character arrays and the num2str function is the creation of file names
• There are occasions when you may want to save data into .dat or .mat files, but you don’t know ahead of time how many files will be required
my_data1.datmy_data2.datmy_data3.dat Etc.
![Page 61: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/61.jpg)
Sample problem
• Load a file of unknown size called some_data
• Create a number of new files, one for each column from the input file
![Page 62: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/62.jpg)
For example
1 2 3
4 5 6
7 8 9
10 11 12
Data from input file
1
4
7
10
Data in File1
2
5
8
11
Data in File2
3
6
9
12
Data in File3
Output files
![Page 63: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/63.jpg)
Load the input fileDetermine the number of rows and columns
Create the file names
Extract the data
Save the data into the new files
![Page 64: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/64.jpg)
![Page 65: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/65.jpg)
Section 10.4Cell Arrays
• The cell array can store different types of data inside the same array
• Each element in the array is also an array
![Page 66: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/66.jpg)
These three arrays all store different data types
![Page 67: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/67.jpg)
Create a cell array using curly braces
![Page 68: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/68.jpg)
• The indexing system used for cell arrays is the same as that used in other arrays.
• You may either use a single index, or a row and column indexing scheme.
• There are two approaches to retrieving information from cell arrays. – Parentheses – results in a description– Curly braces – results in the values
![Page 69: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/69.jpg)
![Page 70: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/70.jpg)
To access a particular element inside an array stored in a cell array, you must use a combination of curly brackets and parentheses
![Page 71: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/71.jpg)
Section 10.5Structure Arrays
• Similar to Cell Arrays
• Multiple arrays of differing data types can be stored in structure arrays
• Instead of using content indexing each of the matrices is given a location called a field
![Page 72: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/72.jpg)
This structure array (struct) contains three fields
This is still a 1x1 structure array – however it has three fields
![Page 73: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/73.jpg)
We can add more content to the structure, and expand its size, by adding more matrices to the fields we’ve defined.
![Page 74: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/74.jpg)
You can access the information using…
• Matrix name
• Field name
• Index numbers
![Page 75: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/75.jpg)
Just calling the matrix name returns a description of the array
![Page 76: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/76.jpg)
You can access the actual arrays you’ve stored in the structure by using an index number to identify which set of data you’re interested in
![Page 77: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/77.jpg)
You can use the field name to access just the data in certain fields. This example returns the arrays in the first field of each member of the structure
![Page 78: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/78.jpg)
Combining an index number and the field name allows you to access one particular array
![Page 79: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/79.jpg)
Finally, if you want to know the content of one particular element in a field you must specify the element index number after the field name.
![Page 80: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/80.jpg)
Array Editor
• You can use the array editor to access the content of a structure array
• Double click the structure array name in the workspace window
![Page 81: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/81.jpg)
• If you double click on one of the elements of the structure in the array editor, the editor expands to show you the contents of that element
![Page 82: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/82.jpg)
Summary
• MATLAB’s primary data structure is the array • MATLAB supports a number of different array
types, each of which can store a particular type of data
• Cell and structure arrays can store more than one data type in the same array
![Page 83: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/83.jpg)
Summary-Data Type
• MATLAB supports the following data types– Numeric
• double
• single
• 8 different types of integers
– Character
– Symbolic
– Logical
![Page 84: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/84.jpg)
Summary - Array Types
• Numeric– double– single– 8 different integer arrays
• Character• Symbolic• Logical• Sparse• Cell• Structure
![Page 85: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/85.jpg)
Summary – Multidimensional Arrays
• Additional dimensions can be stored in MATLAB arrays
• The third dimension is called a page
• Each page must be entered separately as a two-dimensional array
![Page 86: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/86.jpg)
I/OReading and Writing
![Page 87: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/87.jpg)
Example 1: Write to a file with header and numbers
%fid is required for opening a file, here it is gradegrade = fopen('grades.txt','wt'); %fid is a variable, fopen is to open file fprintf(grade,' GRADE\n');fprintf(grade,' -------\n');grades=[82;89;67;90;95;98;67;78;87;80;69;62;76;88;71;70;89]; MaxGrade=max(grades);fprintf('The Maximum Grade is: %0.2f\n',MaxGrade) AvgGrade=grades(1,:);fprintf('The Average Grade is: %0.2f\n',AvgGrade) %pay attention to grade fprintf(grade,'%5.2f %12.8f\n',grade);fclose(grade); %close the file
![Page 88: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/88.jpg)
Reading a filegrade=[];grade_r=fopen('grades.txt','r');while (~feof(grade_r))%feof function end of file% str is just a variable, fscanf is a function that will enable us %to read str=fscanf(grade_r,'%c8',1); %8 characters title1=str; str=fscanf(grade_r,'%c8',1); title2=str; str=fscanf(grade_r,'%g',1); grade=[grade;str]; sapce=fscanf(grade_r,'%2c',1); str=fscanf(grade_r,'%g',1); end_of_line=fscanf(grade_r,'%1c',1); end fclose(grade_r); format long
![Page 89: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/89.jpg)
Reading just the data part of a file
lines=importdata('grades.txt');%load file
x=lines.data; %just the numerical part;
![Page 90: CMPSC 201](https://reader030.vdocuments.net/reader030/viewer/2022012900/56814dcd550346895dbb26db/html5/thumbnails/90.jpg)
Reading a file with headerlines
grade=[];grade_r=fopen('grades.txt','r');%getting the first col which is string until the end of the file%skipping the first two which are part of headernames=textscan(grade_r, '%s%*[^\n]','headerlines',2);names{1} %names only
%to get the data only:%this could be outside the file reading sectionlines=importdata('grades.txt');%load filesize(lines);x=lines.data %just the numerical part;
fclose(grade_r);