MATLAB: The Language of Technical Computing

MATLAB  the language of technical computing

MATLAB : the language of technical computing

Download MATLAB : the language of technical computingMATLAB (matrix laboratory) is a multi-paradigm numerical computing environment and proprietary programming languagedeveloped by MathWorks. MATLAB allows matrix manipulations, plotting of functions and data, implementation of algorithms, creation of user interfaces, and interfacing with programs written in other languages, including C, C++, C#, Java, Fortran and Python.

Size: 5 Mb

DOWNLOAD MORE EBOOKS HERE

Although MATLAB is intended primarily for numerical computing, an optional toolbox uses the MuPAD symbolic engine, allowing access to symbolic computing abilities. An additional package, Simulink, adds graphical multi-domain simulation and model-based design for dynamic and embedded systems.

As of 2018, MATLAB has more than 3 million users worldwide. MATLAB users come from various backgrounds of engineeringscience, and economics.

Table Of Contents

Creating and Concatenating Matrices . . . . . . . . . . . . . . . . . . 1-3
Constructing a Simple Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . 1-4
Specialized Matrix Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-4
Concatenating Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-7
Matrix Concatenation Functions . . . . . . . . . . . . . . . . . . . . . . . . 1-8
Generating a Numeric Sequence . . . . . . . . . . . . . . . . . . . . . . . 1-10
Combining Unlike Data Types . . . . . . . . . . . . . . . . . . . . . . . . 1-11
Matrix Indexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-17
Accessing Single Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-17
Linear Indexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-18
Functions That Control Indexing Style . . . . . . . . . . . . . . . . . . 1-19
Accessing Multiple Elements . . . . . . . . . . . . . . . . . . . . . . . . . . 1-19
Logical Indexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-21
Indexing on Assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-22
Getting Information About a Matrix . . . . . . . . . . . . . . . . . . . 1-23
Dimensions of the Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-23
Data Types Used in the Matrix . . . . . . . . . . . . . . . . . . . . . . . . 1-24
Data Structures Used in the Matrix . . . . . . . . . . . . . . . . . . . . 1-25
Resizing and Reshaping Matrices . . . . . . . . . . . . . . . . . . . . . 1-26
Expanding the Size of a Matrix . . . . . . . . . . . . . . . . . . . . . . . . 1-26
Diminishing the Size of a Matrix . . . . . . . . . . . . . . . . . . . . . . . 1-30
Reshaping a Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-31
Preallocating Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-33
Shifting and Sorting Matrices . . . . . . . . . . . . . . . . . . . . . . . . . 1-35
Shift and Sort Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-35
Shifting the Location of Matrix Elements . . . . . . . . . . . . . . . . 1-35
Sorting the Data in Each Column . . . . . . . . . . . . . . . . . . . . . . 1-37
Sorting the Data in Each Row . . . . . . . . . . . . . . . . . . . . . . . . . 1-37
Sorting Row Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-38
ii Contents
Operating on Diagonal Matrices . . . . . . . . . . . . . . . . . . . . . . . 1-39
Constructing a Matrix from a Diagonal Vector . . . . . . . . . . . . 1-39
Returning a Triangular Portion of a Matrix . . . . . . . . . . . . . . . 1-40
Concatenating Matrices Diagonally . . . . . . . . . . . . . . . . . . . . . 1-40
Empty Matrices, Scalars, and Vectors . . . . . . . . . . . . . . . . . . 1-41
The Empty Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-41
Scalars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-44
Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-44
Full and Sparse Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-46
Sparse Matrix Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-46
Multidimensional Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-48
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-48
Creating Multidimensional Arrays . . . . . . . . . . . . . . . . . . . . . . 1-50
Accessing Multidimensional Array Properties . . . . . . . . . . . . . 1-54
Indexing Multidimensional Arrays . . . . . . . . . . . . . . . . . . . . . . 1-54
Reshaping Multidimensional Arrays . . . . . . . . . . . . . . . . . . . . 1-58
Permuting Array Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . 1-60
Computing with Multidimensional Arrays . . . . . . . . . . . . . . . . 1-62
Organizing Data in Multidimensional Arrays . . . . . . . . . . . . . 1-64
Multidimensional Cell Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . 1-66
Multidimensional Structure Arrays . . . . . . . . . . . . . . . . . . . . . 1-67
Summary of Matrix and Array Functions . . . . . . . . . . . . . . . 1-69
2
Data Types
Overview of MATLAB Data Types . . . . . . . . . . . . . . . . . . . . . . 2-2
Numeric Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-4
Integers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-4
Floating-Point Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-6
Complex Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-11
Infinity and NaN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-12
iii
Identifying Numeric Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-14
Display Format for Numeric Values . . . . . . . . . . . . . . . . . . . . . 2-14
Function Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-16
Logical Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-20
Creating a Logical Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-20
How Logical Arrays Are Used . . . . . . . . . . . . . . . . . . . . . . . . . . 2-22
Identifying Logical Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-24
Characters and Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-25
Creating Character Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-25
Cell Arrays of Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-27
String Comparisons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-30
Searching and Replacing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-33
Converting from Numeric to String . . . . . . . . . . . . . . . . . . . . . 2-34
Converting from String to Numeric . . . . . . . . . . . . . . . . . . . . . 2-36
Function Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-38
Dates and Times . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-41
Types of Date Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-41
Conversions Between Date Formats . . . . . . . . . . . . . . . . . . . . . 2-43
Date String Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-44
Output Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-44
Current Date and Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-46
Function Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-47
Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-49
Building Structure Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-50
Accessing Data in Structure Arrays . . . . . . . . . . . . . . . . . . . . . 2-53
Using Dynamic Field Names . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-54
Finding the Size of Structure Arrays . . . . . . . . . . . . . . . . . . . . 2-55
Adding Fields to Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-56
Deleting Fields from Structures . . . . . . . . . . . . . . . . . . . . . . . . 2-56
Applying Functions and Operators . . . . . . . . . . . . . . . . . . . . . . 2-56
Writing Functions to Operate on Structures . . . . . . . . . . . . . . 2-57
Organizing Data in Structure Arrays . . . . . . . . . . . . . . . . . . . . 2-59
Nesting Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-63
Function Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-65

Cell Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-66
Creating Cell Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-67
Obtaining Data from Cell Arrays . . . . . . . . . . . . . . . . . . . . . . . 2-70
Deleting Cells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-72
Reshaping Cell Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-72
Replacing Lists of Variables with Cell Arrays . . . . . . . . . . . . . 2-72
Applying Functions and Operators . . . . . . . . . . . . . . . . . . . . . . 2-74
Organizing Data in Cell Arrays . . . . . . . . . . . . . . . . . . . . . . . . 2-75
Nesting Cell Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-76
Converting Between Cell and Numeric Arrays . . . . . . . . . . . . 2-78
Cell Arrays of Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-78
Function Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-79
Function Handles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-80
Constructing and Invoking a Function Handle . . . . . . . . . . . . 2-80
Calling a Function Using Its Handle . . . . . . . . . . . . . . . . . . . . 2-80
Simple Function Handle Example . . . . . . . . . . . . . . . . . . . . . . 2-81
MATLAB Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-82
Java Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-83
3
Basic Program Components
Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-2
Types of Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-2
Naming Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-6
Guidelines to Using Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-8
Scope of a Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-8
Lifetime of a Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-9
Keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-10
Special Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-11
v
Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-13
Arithmetic Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-13
Relational Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-14
Logical Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-16
Operator Precedence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-21
MATLAB Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-23
String Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-23
Shell Escape Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-24
Regular Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-26
MATLAB Regular Expression Functions . . . . . . . . . . . . . . . . . 3-26
Elements of an Expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-27
Character Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-27
Character Representation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-30
Logical Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-31
Lookaround Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-34
Quantifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-37
Tokens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-41
Handling Multiple Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-47
Operator Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-51
Comma-Separated Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-55
Generating a List from a Cell Array . . . . . . . . . . . . . . . . . . . . . 3-55
Generating a List from a Structure . . . . . . . . . . . . . . . . . . . . . 3-56
How to Use the Comma-Separated List . . . . . . . . . . . . . . . . . . 3-57
Fast Fourier Transform Example . . . . . . . . . . . . . . . . . . . . . . . 3-59
Program Control Statements . . . . . . . . . . . . . . . . . . . . . . . . . . 3-61
Conditional Control — if, switch . . . . . . . . . . . . . . . . . . . . . . . . 3-61
Loop Control — for, while, continue, break . . . . . . . . . . . . . . . 3-65
Error Control — try, catch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-68
Program Termination — return . . . . . . . . . . . . . . . . . . . . . . . . 3-69
Symbol Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-70
Asterisk — * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-71
At — @ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-71
Colon — : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-72
Comma — , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-73
vi Contents
Curly Braces — { } . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-74
Dot — . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-74
Dot-Dot — .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-75
Dot-Dot-Dot (Ellipsis) — … . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-75
Dot-Parentheses — .( ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-76
Exclamation Point — ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-76
Parentheses — ( ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-77
Percent — % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-77
Percent-Brace — %{ %} . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-78
Semicolon — ; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-78
Single Quotes — ‘ ‘ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-79
Space Character . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-79
Slash and Backslash — / \ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-80
Square Brackets — [ ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-80
MATLAB Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-82
M-File Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-82
Built-In Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-83
Overloaded MATLAB Functions . . . . . . . . . . . . . . . . . . . . . . . . 3-84
4
M-File Programming
Program Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2
Creating a Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2
Getting the Bugs Out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-3
Cleaning Up the Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-4
Improving Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-5
Checking It In . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-6
Working with M-Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-7
Types of M-Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-7
Basic Parts of an M-File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-8
Creating a Simple M-File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-13
Providing Help for Your Program . . . . . . . . . . . . . . . . . . . . . . . 4-15
Creating P-Code Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-15

M-File Scripts and Functions . . . . . . . . . . . . . . . . . . . . . . . . . . 4-16
M-File Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-16
M-File Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-17
Types of Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-18
Identifying Dependencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-19
Function Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-21
Checking the Number of Input Arguments . . . . . . . . . . . . . . . 4-21
Passing Variable Numbers of Arguments . . . . . . . . . . . . . . . . 4-23
Passing Optional Arguments to Nested Functions . . . . . . . . . 4-25
Returning Output Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . 4-28
Function Handles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-30
Constructing a Function Handle . . . . . . . . . . . . . . . . . . . . . . . . 4-30
Calling a Function Using Its Handle . . . . . . . . . . . . . . . . . . . . 4-31
Functions That Operate on Function Handles . . . . . . . . . . . . . 4-32
Additional Information on Function Handles . . . . . . . . . . . . . 4-32
Calling Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-34
What Happens When You Call a Function . . . . . . . . . . . . . . . . 4-34
Determining Which Function Is Called . . . . . . . . . . . . . . . . . . 4-35
MATLAB Calling Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-38
Passing Certain Argument Types . . . . . . . . . . . . . . . . . . . . . . . 4-41
Passing Arguments in Structures or Cell Arrays . . . . . . . . . . . 4-43
Calling External Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-44
Running External Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-44
5
Types of Functions
Overview of MATLAB Function Types . . . . . . . . . . . . . . . . . . 5-2
Anonymous Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-3
Constructing an Anonymous Function . . . . . . . . . . . . . . . . . . . . 5-3
Arrays of Anonymous Functions . . . . . . . . . . . . . . . . . . . . . . . . . 5-5
Outputs from Anonymous Functions . . . . . . . . . . . . . . . . . . . . . 5-6
viii Contents
Variables Used in the Expression . . . . . . . . . . . . . . . . . . . . . . . . 5-8
Examples of Anonymous Functions . . . . . . . . . . . . . . . . . . . . . 5-11
Primary M-File Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-14
Nested Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-15
Writing Nested Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-15
Calling Nested Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-16
Variable Scope in Nested Functions . . . . . . . . . . . . . . . . . . . . . 5-18
Using Function Handles with Nested Functions . . . . . . . . . . . 5-20
Examples of Nested Functions . . . . . . . . . . . . . . . . . . . . . . . . . 5-25
Subfunctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-31
Calling Subfunctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-32
Accessing Help for a Subfunction . . . . . . . . . . . . . . . . . . . . . . . 5-32
Private Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-33
Private Directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-33
Accessing Help for a Private Function . . . . . . . . . . . . . . . . . . . 5-33
Overloaded Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-34
Class Directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-34
6
Data Import and Export
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-3
Text Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-4
Graphics Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-4
Audio and Audio/Video Data . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-4
Spreadsheets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-4
Scientific Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-5
The Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-5
Low-Level File I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-5
Large Data Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-5
Toolboxes for Importing Data . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-6
ix
Using the Import Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-7
Using the Import Wizard with Text Data . . . . . . . . . . . . . . . . . 6-7
Using the Import Wizard with Binary Data . . . . . . . . . . . . . . 6-13
Supported File Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-16
Saving and Loading MAT-Files . . . . . . . . . . . . . . . . . . . . . . . 6-18
Exporting Data to MAT-Files . . . . . . . . . . . . . . . . . . . . . . . . . . 6-18
Importing Data from MAT-Files . . . . . . . . . . . . . . . . . . . . . . . 6-24
Accessing Files with Memory-Mapping . . . . . . . . . . . . . . . . 6-28
Overview of Memory-Mapping in MATLAB . . . . . . . . . . . . . . 6-28
The memmapfile Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-32
Constructing a memmapfile Object . . . . . . . . . . . . . . . . . . . . . 6-34
Reading a Mapped File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-46
Writing to a Mapped File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-51
Methods of the memmapfile Class . . . . . . . . . . . . . . . . . . . . . . 6-58
Deleting a Memory Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-60
Memory Mapping Demo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-60
Importing Text Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-65
The MATLAB Import Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . 6-65
Using Import Functions with Text Data . . . . . . . . . . . . . . . . . 6-65
Importing Numeric Text Data . . . . . . . . . . . . . . . . . . . . . . . . . . 6-68
Importing Delimited ASCII Data Files . . . . . . . . . . . . . . . . . . . 6-69
Importing Numeric Data with Text Headers . . . . . . . . . . . . . . 6-69
Importing Mixed Alphabetic and Numeric Data . . . . . . . . . . . 6-70
Importing from XML Documents . . . . . . . . . . . . . . . . . . . . . . . 6-72
Exporting Text Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-73
Exporting Delimited ASCII Data Files . . . . . . . . . . . . . . . . . . . 6-74
Using the diary Function to Export Data . . . . . . . . . . . . . . . . . 6-76
Exporting to XML Documents . . . . . . . . . . . . . . . . . . . . . . . . . . 6-77
Working with Graphics Files . . . . . . . . . . . . . . . . . . . . . . . . . 6-78
Getting Information About Graphics Files . . . . . . . . . . . . . . . . 6-78
Importing Graphics Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-79
Exporting Graphics Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-79

Working with Audio and Video Data . . . . . . . . . . . . . . . . . . 6-81
Getting Information About Audio/Video Files . . . . . . . . . . . . . 6-81
Importing Audio/Video Data . . . . . . . . . . . . . . . . . . . . . . . . . . 6-82
Exporting Audio/Video Data . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-83
Working with Spreadsheets . . . . . . . . . . . . . . . . . . . . . . . . . . 6-85
Microsoft Excel Spreadsheets . . . . . . . . . . . . . . . . . . . . . . . . . . 6-85
Lotus 123 Spreadsheets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-88
Working with Scientific Data Formats . . . . . . . . . . . . . . . . . 6-91
Working with Common Data Format (CDF) Files . . . . . . . . . 6-91
Working with Flexible Image Transport System (FITS) Files 6-94
Working with Hierarchical Data Format (HDF5) Files . . . . . 6-97
Importing HDF4 and HDF-EOS Data . . . . . . . . . . . . . . . . . 6-107
Using the HDF Import Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-107
Using the HDF4 Import Tool Subsetting Options . . . . . . . . . 6-112
Using the MATLAB hdfread Function . . . . . . . . . . . . . . . . . . 6-122
Using the HDF4 Command-Line Interface . . . . . . . . . . . . . . 6-126
Exporting MATLAB Data to an HDF4 File . . . . . . . . . . . . 6-134
Example: Exporting Data to an HDF4 File . . . . . . . . . . . . . . 6-134
Using the MATLAB HDF Utility API . . . . . . . . . . . . . . . . . . 6-141
Using Low-Level File I/O Functions . . . . . . . . . . . . . . . . . . 6-143
Opening Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-144
Reading Binary Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-146
Writing Binary Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-148
Controlling Position in a File . . . . . . . . . . . . . . . . . . . . . . . . . 6-148
Reading Strings Line by Line from Text Files . . . . . . . . . . . . 6-150
Reading Formatted ASCII Data . . . . . . . . . . . . . . . . . . . . . . . 6-152
Writing Formatted Text Files . . . . . . . . . . . . . . . . . . . . . . . . 6-153
Closing a File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-155
Exchanging Files over the Internet . . . . . . . . . . . . . . . . . . 6-156
Downloading Web Content and Files . . . . . . . . . . . . . . . . . . . 6-156
Creating and Uncompressing Zip Archives . . . . . . . . . . . . . . 6-158
Sending E-Mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-159
Performing FTP File Operations . . . . . . . . . . . . . . . . . . . . . . 6-161
xi
7
Error Handling
Checking for Errors with try-catch . . . . . . . . . . . . . . . . . . . . . 7-2
Nested try-catch Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-3
Handling and Recovering from an Error . . . . . . . . . . . . . . . . 7-4
Reporting an Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-4
Identifying the Cause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-5
Regenerating an Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-7
Message Identifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-8
Identifier Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-8
Using Message Identifiers with lasterr . . . . . . . . . . . . . . . . . . . 7-9
Warnings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-12
Reporting a Warning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-12
Identifying the Cause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-13
Warning Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-14
Warning Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-14
Warning Control Statements . . . . . . . . . . . . . . . . . . . . . . . . . . 7-15
Output from Control Statements . . . . . . . . . . . . . . . . . . . . . . . 7-17
Saving and Restoring State . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-20
Debug, Backtrace, and Verbose Modes . . . . . . . . . . . . . . . . . . . 7-21
Debugging Errors and Warnings . . . . . . . . . . . . . . . . . . . . . . 7-23
8
Classes and Objects
Classes and Objects: An Overview . . . . . . . . . . . . . . . . . . . . . . 8-2
Features of Object-Oriented Programming . . . . . . . . . . . . . . . . 8-2
MATLAB Data Class Hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . 8-3
Creating Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-4
Invoking Methods on Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-4
Private Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-5
xii Contents
Helper Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-5
Debugging Class Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-5
Setting Up Class Directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-6
Data Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-7
Tips for C++ and Java Programmers . . . . . . . . . . . . . . . . . . . . . 8-7
Designing User Classes in MATLAB . . . . . . . . . . . . . . . . . . . . . 8-9
The MATLAB Canonical Class . . . . . . . . . . . . . . . . . . . . . . . . . . 8-9
The Class Constructor Method . . . . . . . . . . . . . . . . . . . . . . . . . 8-10
Examples of Constructor Methods . . . . . . . . . . . . . . . . . . . . . . 8-11
Identifying Objects Outside the Class Directory . . . . . . . . . . . 8-11
The display Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-12
Accessing Object Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-13
The set and get Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-13
Indexed Reference Using subsref and subsasgn . . . . . . . . . . . 8-14
Handling Subscripted Reference . . . . . . . . . . . . . . . . . . . . . . . . 8-15
Handling Subscripted Assignment . . . . . . . . . . . . . . . . . . . . . . 8-17
Object Indexing Within Methods . . . . . . . . . . . . . . . . . . . . . . . 8-18
Defining end Indexing for an Object . . . . . . . . . . . . . . . . . . . . . 8-19
Indexing an Object with Another Object . . . . . . . . . . . . . . . . . 8-19
Converter Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-20
Overloading Operators and Functions . . . . . . . . . . . . . . . . . 8-21
Overloading Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-21
Overloading Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-23
Example — A Polynomial Class . . . . . . . . . . . . . . . . . . . . . . . . 8-24
Polynom Data Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-24
Polynom Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-24
The Polynom Constructor Method . . . . . . . . . . . . . . . . . . . . . . 8-24
Converter Methods for the Polynom Class . . . . . . . . . . . . . . . . 8-25
The Polynom display Method . . . . . . . . . . . . . . . . . . . . . . . . . . 8-28
The Polynom subsref Method . . . . . . . . . . . . . . . . . . . . . . . . . . 8-29
Overloading Arithmetic Operators for polynom . . . . . . . . . . . . 8-30
Overloading Functions for the Polynom Class . . . . . . . . . . . . . 8-32
Listing Class Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-33

Building on Other Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-35
Simple Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-35
Multiple Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-37
Aggregation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-37
Example — Assets and Asset Subclasses . . . . . . . . . . . . . . . . 8-38
Inheritance Model for the Asset Class . . . . . . . . . . . . . . . . . . . 8-38
Asset Class Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-39
Other Asset Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-39
The Asset Constructor Method . . . . . . . . . . . . . . . . . . . . . . . . . 8-39
The Asset get Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-41
The Asset set Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-41
The Asset subsref Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-42
The Asset subsasgn Method . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-43
The Asset display Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-44
The Asset fieldcount Method . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-45
Designing the Stock Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-45
The Stock Constructor Method . . . . . . . . . . . . . . . . . . . . . . . . . 8-46
The Stock get Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-48
The Stock set Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-49
The Stock subsref Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-50
The Stock subsasgn Method . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-51
The Stock display Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-53
Example — The Portfolio Container . . . . . . . . . . . . . . . . . . . 8-54
Designing the Portfolio Class . . . . . . . . . . . . . . . . . . . . . . . . . . 8-54
The Portfolio Constructor Method . . . . . . . . . . . . . . . . . . . . . . 8-55
The Portfolio display Method . . . . . . . . . . . . . . . . . . . . . . . . . . 8-56
The Portfolio pie3 Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-57
Creating a Portfolio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-58
Saving and Loading Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-60
Modifying Objects During Save or Load . . . . . . . . . . . . . . . . . . 8-60
Example — Defining saveobj and loadobj for Portfolio . . 8-61
Summary of Code Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-61
The saveobj Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-62
The loadobj Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-62
Changing the Portfolio Constructor . . . . . . . . . . . . . . . . . . . . . 8-63
The Portfolio subsref Method . . . . . . . . . . . . . . . . . . . . . . . . . . 8-64
xiv Contents
Object Precedence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-65
Specifying Precedence of User-Defined Classes . . . . . . . . . . . . 8-66
How MATLAB Determines Which Method to Call . . . . . . . 8-67
Selecting a Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-67
Querying Which Method MATLAB Will Call . . . . . . . . . . . . . . 8-70
9
Scheduling Program Execution with Timers
Using a MATLAB Timer Object . . . . . . . . . . . . . . . . . . . . . . . . . 9-2
Example: Displaying a Message . . . . . . . . . . . . . . . . . . . . . . . . . 9-3
Creating Timer Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-4
Timer Object Naming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-5
Working with Timer Object Properties . . . . . . . . . . . . . . . . . . 9-6
Retrieving the Value of Timer Object Properties . . . . . . . . . . . . 9-6
Setting the Value of Timer Object Properties . . . . . . . . . . . . . . 9-7
Starting and Stopping Timers . . . . . . . . . . . . . . . . . . . . . . . . . . 9-9
Starting a Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-9
Starting a Timer at a Specified Time . . . . . . . . . . . . . . . . . . . . 9-10
Stopping Timer Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-10
Blocking the MATLAB Command Line . . . . . . . . . . . . . . . . . . 9-11
Creating and Executing Callback Functions . . . . . . . . . . . . 9-13
Associating Commands with Timer Object Events . . . . . . . . . 9-13
Creating Callback Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-14
Specifying the Value of Callback Function Properties . . . . . . 9-16
Timer Object Execution Modes . . . . . . . . . . . . . . . . . . . . . . . . 9-18
Executing a Timer Callback Function Once . . . . . . . . . . . . . . . 9-18
Executing a Timer Callback Function Multiple Times . . . . . . 9-19
Handling Callback Function Queuing Conflicts . . . . . . . . . . . 9-20
xv
Deleting Timer Objects from Memory . . . . . . . . . . . . . . . . . . 9-22
Testing the Validity of a Timer Object . . . . . . . . . . . . . . . . . . . 9-22
Deleting All Existing Timer Objects . . . . . . . . . . . . . . . . . . . . . 9-22
Finding All Timer Objects in Memory . . . . . . . . . . . . . . . . . . 9-23
Finding Invisible Timer Objects . . . . . . . . . . . . . . . . . . . . . . . . 9-23
10
Improving Performance and Memory Usage
Analyzing Your Program’s Performance . . . . . . . . . . . . . . . 10-2
The M-File Profiler Utility . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-2
Stopwatch Timer Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-2
Techniques for Improving Performance . . . . . . . . . . . . . . . . 10-4
Vectorizing Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-4
Preallocating Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-7
Coding Loops in a MEX-File . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-9
Assigning to Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-9
Operating on Real Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-10
Using Appropriate Logical Operators . . . . . . . . . . . . . . . . . . . 10-10
Overloading Built-In Functions . . . . . . . . . . . . . . . . . . . . . . . 10-11
Functions Are Generally Faster Than Scripts . . . . . . . . . . . . 10-11
Load and Save Are Faster Than File I/O Functions . . . . . . . 10-11
Avoid Large Background Processes . . . . . . . . . . . . . . . . . . . . 10-11
Using Memory Efficiently . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-12
Memory Allocation for Arrays . . . . . . . . . . . . . . . . . . . . . . . . 10-12
Data Structures and Memory . . . . . . . . . . . . . . . . . . . . . . . . . 10-17
Memory Management Functions . . . . . . . . . . . . . . . . . . . . . . 10-18
Strategies for Efficient Use of Memory . . . . . . . . . . . . . . . . . . 10-18
Resolving “Out of Memory” Errors . . . . . . . . . . . . . . . . . . . . 10-21
General Suggestions for Reclaiming Memory . . . . . . . . . . . . 10-21
Compressing Data in Memory . . . . . . . . . . . . . . . . . . . . . . . . . 10-21

Increasing System Swap Space . . . . . . . . . . . . . . . . . . . . . . . . 10-22
Freeing Up System Resources on Windows Systems . . . . . . . 10-23
Reloading Variables on UNIX Systems . . . . . . . . . . . . . . . . . 10-23
11
Programming Tips
Command and Function Syntax . . . . . . . . . . . . . . . . . . . . . . . 11-3
Syntax Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-3
Command and Function Syntaxes . . . . . . . . . . . . . . . . . . . . . . 11-3
Command Line Continuation . . . . . . . . . . . . . . . . . . . . . . . . . . 11-3
Completing Commands Using the Tab Key . . . . . . . . . . . . . . . 11-4
Recalling Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-4
Clearing Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-5
Suppressing Output to the Screen . . . . . . . . . . . . . . . . . . . . . . 11-5
Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-6
Using the Help Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-6
Help on Functions from the Help Browser . . . . . . . . . . . . . . . . 11-7
Help on Functions from the Command Window . . . . . . . . . . . 11-7
Topical Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-7
Paged Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-8
Writing Your Own Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-8
Help for Subfunctions and Private Functions . . . . . . . . . . . . . 11-9
Help for Methods and Overloaded Functions . . . . . . . . . . . . . . 11-9
Development Environment . . . . . . . . . . . . . . . . . . . . . . . . . . 11-10
Workspace Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-10
Using the Find and Replace Utility . . . . . . . . . . . . . . . . . . . . 11-10
Commenting Out a Block of Code . . . . . . . . . . . . . . . . . . . . . . 11-11
Creating M-Files from Command History . . . . . . . . . . . . . . . 11-11
Editing M-Files in EMACS . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-11
M-File Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-12
M-File Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-12
Using Lowercase for Function Names . . . . . . . . . . . . . . . . . . 11-12
Getting a Function’s Name and Path . . . . . . . . . . . . . . . . . . . 11-13
xvii
What M-Files Does a Function Use? . . . . . . . . . . . . . . . . . . . . 11-13
Dependent Functions, Built-Ins, Classes . . . . . . . . . . . . . . . . 11-13
Function Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-14
Getting the Input and Output Arguments . . . . . . . . . . . . . . . 11-14
Variable Numbers of Arguments . . . . . . . . . . . . . . . . . . . . . . 11-14
String or Numeric Arguments . . . . . . . . . . . . . . . . . . . . . . . . . 11-15
Passing Arguments in a Structure . . . . . . . . . . . . . . . . . . . . . 11-15
Passing Arguments in a Cell Array . . . . . . . . . . . . . . . . . . . . 11-15
Program Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-16
Planning the Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-16
Using Pseudo-Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-16
Selecting the Right Data Structures . . . . . . . . . . . . . . . . . . . . 11-16
General Coding Practices . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-17
Naming a Function Uniquely . . . . . . . . . . . . . . . . . . . . . . . . . 11-17
The Importance of Comments . . . . . . . . . . . . . . . . . . . . . . . . . 11-17
Coding in Steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-18
Making Modifications in Steps . . . . . . . . . . . . . . . . . . . . . . . . 11-18
Functions with One Calling Function . . . . . . . . . . . . . . . . . . . 11-18
Testing the Final Program . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-18
Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-19
The MATLAB Debug Functions . . . . . . . . . . . . . . . . . . . . . . . 11-19
More Debug Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-19
The MATLAB Graphical Debugger . . . . . . . . . . . . . . . . . . . . . 11-20
A Quick Way to Examine Variables . . . . . . . . . . . . . . . . . . . . 11-20
Setting Breakpoints from the Command Line . . . . . . . . . . . . 11-21
Finding Line Numbers to Set Breakpoints . . . . . . . . . . . . . . . 11-21
Stopping Execution on an Error or Warning . . . . . . . . . . . . . 11-21
Locating an Error from the Error Message . . . . . . . . . . . . . . 11-21
Using Warnings to Help Debug . . . . . . . . . . . . . . . . . . . . . . . . 11-22
Making Code Execution Visible . . . . . . . . . . . . . . . . . . . . . . . 11-22
Debugging Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-22
Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-23
Rules for Variable Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-23
Making Sure Variable Names Are Valid . . . . . . . . . . . . . . . . 11-23
Don’t Use Function Names for Variables . . . . . . . . . . . . . . . . 11-24
Checking for Reserved Keywords . . . . . . . . . . . . . . . . . . . . . . 11-24
xviii Contents
Avoid Using i and j for Variables . . . . . . . . . . . . . . . . . . . . . . 11-24
Avoid Overwriting Variables in Scripts . . . . . . . . . . . . . . . . . 11-25
Persistent Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-25
Protecting Persistent Variables . . . . . . . . . . . . . . . . . . . . . . . 11-25
Global Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-26
Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-27
Creating Strings with Concatenation . . . . . . . . . . . . . . . . . . 11-27
Comparing Methods of Concatenation . . . . . . . . . . . . . . . . . . 11-27
Store Arrays of Strings in a Cell Array . . . . . . . . . . . . . . . . . 11-28
Converting Between Strings and Cell Arrays . . . . . . . . . . . . 11-28
Search and Replace Using Regular Expressions . . . . . . . . . . 11-29
Evaluating Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-30
Find Alternatives to Using eval . . . . . . . . . . . . . . . . . . . . . . . 11-30
Assigning to a Series of Variables . . . . . . . . . . . . . . . . . . . . . . 11-30
Short-Circuit Logical Operators . . . . . . . . . . . . . . . . . . . . . . . 11-31
Changing the Counter Variable within a for Loop . . . . . . . . . 11-31
MATLAB Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-32
Precedence Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-32
File Precedence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-33
Adding a Directory to the Search Path . . . . . . . . . . . . . . . . . . 11-33
Handles to Functions Not on the Path . . . . . . . . . . . . . . . . . . 11-34
Making Toolbox File Changes Visible to MATLAB . . . . . . . . 11-34
Making Nontoolbox File Changes Visible to MATLAB . . . . . 11-35
Change Notification on Windows . . . . . . . . . . . . . . . . . . . . . . 11-35
Program Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-36
Using break, continue, and return . . . . . . . . . . . . . . . . . . . . . 11-36
Using switch Versus if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-37
MATLAB case Evaluates Strings . . . . . . . . . . . . . . . . . . . . . . 11-37
Multiple Conditions in a case Statement . . . . . . . . . . . . . . . . 11-37
Implicit Break in switch-case . . . . . . . . . . . . . . . . . . . . . . . . . 11-38
Variable Scope in a switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-38
Catching Errors with try-catch . . . . . . . . . . . . . . . . . . . . . . . . 11-38
Nested try-catch Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-39
Forcing an Early Return from a Function . . . . . . . . . . . . . . . 11-40

Save and Load . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-40
Saving Data from the Workspace . . . . . . . . . . . . . . . . . . . . . . 11-40
Loading Data into the Workspace . . . . . . . . . . . . . . . . . . . . . . 11-40
Viewing Variables in a MAT-File . . . . . . . . . . . . . . . . . . . . . . 11-41
Appending to a MAT-File . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-41
Save and Load on Startup or Quit . . . . . . . . . . . . . . . . . . . . . 11-42
Saving to an ASCII File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-42
Files and Filenames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-43
Naming M-files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-43
Naming Other Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-43
Passing Filenames as Arguments . . . . . . . . . . . . . . . . . . . . . . 11-44
Passing Filenames to ASCII Files . . . . . . . . . . . . . . . . . . . . . . 11-44
Determining Filenames at Run-Time . . . . . . . . . . . . . . . . . . . 11-44
Returning the Size of a File . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-45
Input/Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-46
File I/O Function Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-46
Common I/O Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-46
Readable File Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-46
Using the Import Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-47
Loading Mixed Format Data . . . . . . . . . . . . . . . . . . . . . . . . . . 11-47
Reading Files with Different Formats . . . . . . . . . . . . . . . . . . 11-47
Reading ASCII Data into a Cell Array . . . . . . . . . . . . . . . . . . 11-48
Interactive Input into Your Program . . . . . . . . . . . . . . . . . . . 11-48
Starting MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-49
Getting MATLAB to Start Up Faster . . . . . . . . . . . . . . . . . . . 11-49
Operating System Compatibility . . . . . . . . . . . . . . . . . . . . . 11-50
Executing O/S Commands from MATLAB . . . . . . . . . . . . . . . 11-50
Searching Text with grep . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-50
Constructing Paths and Filenames . . . . . . . . . . . . . . . . . . . . . 11-50
Finding the MATLAB Root Directory . . . . . . . . . . . . . . . . . . . 11-51
Temporary Directories and Filenames . . . . . . . . . . . . . . . . . . 11-51
xx Contents
Demos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-52
Demos Available with MATLAB . . . . . . . . . . . . . . . . . . . . . . . 11-52
For More Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-53

Related Books

Download MATLAB : the language of technical computing

arthur peace

A little bio won't be bad but i don't have any.. Lol.

Related Posts

Leave a Reply

Your email address will not be published.