Creating and Concatenating Matrices
Constructing a Simple Matrix
Specialized Matrix Functions
Concatenating Matrices
Matrix Concatenation Functions
Generating a Numeric Sequence
Combining Unlike Data Types
Matrix Indexing
Accessing Single Elements
Linear Indexing
Functions That Control Indexing Style
Accessing Multiple Elements
Logical Indexing
Indexing on Assignment
Getting Information About a Matrix
Dimensions of the Matrix
Data Types Used in the Matrix
Data Structures Used in the Matrix
Resizing and Reshaping Matrices
Expanding the Size of a Matrix
Diminishing the Size of a Matrix
Reshaping a Matrix
Preallocating Memory
Shifting and Sorting Matrices
Shift and Sort Functions
Shifting the Location of Matrix Elements
Sorting the Data in Each Column
Sorting the Data in Each Row
Sorting Row Vectors
Operating on Diagonal Matrices
Constructing a Matrix from a Diagonal Vector
Returning a Triangular Portion of a Matrix
Concatenating Matrices Diagonally
Empty Matrices, Scalars, and Vectors
The Empty Matrix
Scalars
Vectors
Full and Sparse Matrices
Sparse Matrix Functions
Multidimensional Arrays
Overview
Creating Multidimensional Arrays
Accessing Multidimensional Array Properties
Indexing Multidimensional Arrays
Reshaping Multidimensional Arrays
Permuting Array Dimensions
Computing with Multidimensional Arrays
Organizing Data in Multidimensional Arrays
Multidimensional Cell Arrays
Multidimensional Structure Arrays
Summary of Matrix and Array Functions
Data Types
Overview of MATLAB Data Types
Numeric Types
Integers
Floating-Point Numbers
Complex Numbers
Infinity and NaN
Identifying Numeric Types
Display Format for Numeric Values
Function Summary
Logical Types
Creating a Logical Array
How Logical Arrays Are Used
Identifying Logical Arrays
Characters and Strings
Creating Character Arrays
Cell Arrays of Strings
String Comparisons
Searching and Replacing
Converting from Numeric to String
Converting from String to Numeric
Function Summary
Dates and Times
Types of Date Formats
Conversions Between Date Formats
Date String Formats
Output Formats
Current Date and Time
Function Summary
Structures
Building Structure Arrays
Accessing Data in Structure Arrays
Using Dynamic Field Names
Finding the Size of Structure Arrays
Adding Fields to Structures
Deleting Fields from Structures
Applying Functions and Operators
Writing Functions to Operate on Structures
Organizing Data in Structure Arrays
Nesting Structures
Function Summary
Cell Arrays
Creating Cell Arrays
Obtaining Data from Cell Arrays
Deleting Cells
Reshaping Cell Arrays
Replacing Lists of Variables with Cell Arrays
Applying Functions and Operators
Organizing Data in Cell Arrays
Nesting Cell Arrays
Converting Between Cell and Numeric Arrays
Cell Arrays of Structures
Function Summary
Function Handles
Constructing and Invoking a Function Handle
Calling a Function Using Its Handle
Simple Function Handle Example
MATLAB Classes
Java Classes
Basic Program Components
Variables
Types of Variables
Naming Variables
Guidelines to Using Variables
Scope of a Variable
Lifetime of a Variable
Keywords
Special Values
Operators
Arithmetic Operators
Relational Operators
Logical Operators
Operator Precedence
MATLAB Expressions
String Evaluation
Shell Escape Functions
Regular Expressions
MATLAB Regular Expression Functions
Elements of an Expression
Character Classes
Character Representation
Logical Operators
Lookaround Operators
Quantifiers
Tokens
Handling Multiple Strings
Operator Summary
Comma-Separated Lists
Generating a List from a Cell Array
Generating a List from a Structure
How to Use the Comma-Separated List
Fast Fourier Transform Example
Program Control Statements
Conditional Control -- if, switch
Loop Control -- for, while, continue, break
Error Control -- try, catch
Program Termination -- return
Symbol Reference
Asterisk -- *
At -- @
Colon -- :
Comma -- ,
Curly Braces -- { }
Dot -- .
Dot-Dot -- ..
Dot-Dot-Dot (Ellipsis) -- ...
Dot-Parentheses -- .( )
Exclamation Point -- !
Parentheses -- ( )
Percent -- %
Percent-Brace -- %{ %}
Semicolon -- ;
Single Quotes -- ' '
Space Character
Slash and Backslash -- / \
Square Brackets -- [ ]
MATLAB Functions
M-File Functions
Built-In Functions
Overloaded MATLAB Functions
M-File Programming
Program Development
Creating a Program
Getting the Bugs Out
Cleaning Up the Program
Improving Performance
Checking It In
Working with M-Files
Types of M-Files
Basic Parts of an M-File
Creating a Simple M-File
Providing Help for Your Program
Creating P-Code Files
M-File Scripts and Functions
M-File Scripts
M-File Functions
Types of Functions
Identifying Dependencies
Function Arguments
Checking the Number of Input Arguments
Passing Variable Numbers of Arguments
Passing Optional Arguments to Nested Functions
Returning Output Arguments
Function Handles
Constructing a Function Handle
Calling a Function Using Its Handle
Functions That Operate on Function Handles
Additional Information on Function Handles
Calling Functions
What Happens When You Call a Function
Determining Which Function Is Called
MATLAB Calling Syntax
Passing Certain Argument Types
Passing Arguments in Structures or Cell Arrays
Calling External Functions
Running External Programs
Types of Functions
Overview of MATLAB Function Types
Anonymous Functions
Constructing an Anonymous Function
Arrays of Anonymous Functions
Outputs from Anonymous Functions
Variables Used in the Expression
Examples of Anonymous Functions
Primary M-File Functions
Nested Functions
Writing Nested Functions
Calling Nested Functions
Variable Scope in Nested Functions
Using Function Handles with Nested Functions
Examples of Nested Functions
Subfunctions
Calling Subfunctions
Accessing Help for a Subfunction
Private Functions
Private Directories
Accessing Help for a Private Function
Overloaded Functions
Class Directories
Data Import and Export
Overview
Text Data
Graphics Files
Audio and Audio/Video Data
Spreadsheets
Scientific Formats
The Internet
Low-Level File I/O
Large Data Sets
Toolboxes for Importing Data
Using the Import Wizard
Using the Import Wizard with Text Data
Using the Import Wizard with Binary Data
Supported File Formats
Saving and Loading MAT-Files
Exporting Data to MAT-Files
Importing Data from MAT-Files
Accessing Files with Memory-Mapping
Overview of Memory-Mapping in MATLAB
The memmapfile Class
Constructing a memmapfile Object
Reading a Mapped File
Writing to a Mapped File
Methods of the memmapfile Class
Deleting a Memory Map
Memory Mapping Demo
Importing Text Data
The MATLAB Import Wizard
Using Import Functions with Text Data
Importing Numeric Text Data
Importing Delimited ASCII Data Files
Importing Numeric Data with Text Headers
Importing Mixed Alphabetic and Numeric Data
Importing from XML Documents
Exporting Text Data
Exporting Delimited ASCII Data Files
Using the diary Function to Export Data
Exporting to XML Documents
Working with Graphics Files
Getting Information About Graphics Files
Importing Graphics Data
Exporting Graphics Data
Working with Audio and Video Data
Getting Information About Audio/Video Files
Importing Audio/Video Data
Exporting Audio/Video Data
Working with Spreadsheets
Microsoft Excel Spreadsheets
Lotus 123 Spreadsheets
Working with Scientific Data Formats
Working with Common Data Format (CDF) Files
Working with Flexible Image Transport System (FITS) Files
Working with Hierarchical Data Format (HDF5) Files
Importing HDF4 and HDF-EOS Data
Using the HDF Import Tool
Using the HDF4 Import Tool Subsetting Options
Using the MATLAB hdfread Function
Using the HDF4 Command-Line Interface
Exporting MATLAB Data to an HDF4 File
Example: Exporting Data to an HDF4 File
Using the MATLAB HDF Utility API
Using Low-Level File I/O Functions
Opening Files
Reading Binary Data
Writing Binary Data
Controlling Position in a File
Reading Strings Line by Line from Text Files
Reading Formatted ASCII Data
Writing Formatted Text Files
Closing a File
Exchanging Files over the Internet
Downloading Web Content and Files
Creating and Uncompressing Zip Archives
Sending E-Mail
Performing FTP File Operations
Error Handling
Checking for Errors with try-catch
Nested try-catch Blocks
Handling and Recovering from an Error
Reporting an Error
Identifying the Cause
Regenerating an Error
Message Identifiers
Identifier Format
Using Message Identifiers with lasterr
Warnings
Reporting a Warning
Identifying the Cause
Warning Control
Warning Statements
Warning Control Statements
Output from Control Statements
Saving and Restoring State
Debug, Backtrace, and Verbose Modes
Debugging Errors and Warnings
Classes and Objects
Classes and Objects: An Overview
Features of Object-Oriented Programming
MATLAB Data Class Hierarchy
Creating Objects
Invoking Methods on Objects
Private Methods
Helper Functions
Debugging Class Methods
Setting Up Class Directories
Data Structure
Tips for C++ and Java Programmers
Designing User Classes in MATLAB
The MATLAB Canonical Class
The Class Constructor Method
Examples of Constructor Methods
Identifying Objects Outside the Class Directory
The display Method
Accessing Object Data
The set and get Methods
Indexed Reference Using subsref and subsasgn
Handling Subscripted Reference
Handling Subscripted Assignment
Object Indexing Within Methods
Defining end Indexing for an Object
Indexing an Object with Another Object
Converter Methods
Overloading Operators and Functions
Overloading Operators
Overloading Functions
Example -- A Polynomial Class
Polynom Data Structure
Polynom Methods
The Polynom Constructor Method
Converter Methods for the Polynom Class
The Polynom display Method
The Polynom subsref Method
Overloading Arithmetic Operators for polynom
Overloading Functions for the Polynom Class
Listing Class Methods
Building on Other Classes
Simple Inheritance
Multiple Inheritance
Aggregation
Example -- Assets and Asset Subclasses
Inheritance Model for the Asset Class
Asset Class Design
Other Asset Methods
The Asset Constructor Method
The Asset get Method
The Asset set Method
The Asset subsref Method
The Asset subsasgn Method
The Asset display Method
The Asset fieldcount Method
Designing the Stock Class
The Stock Constructor Method
The Stock get Method
The Stock set Method
The Stock subsref Method
The Stock subsasgn Method
The Stock display Method
Example -- The Portfolio Container
Designing the Portfolio Class
The Portfolio Constructor Method
The Portfolio display Method
The Portfolio pie3 Method
Creating a Portfolio
Saving and Loading Objects
Modifying Objects During Save or Load
Example -- Defining saveobj and loadobj for Portfolio
Summary of Code Changes
The saveobj Method
The loadobj Method
Changing the Portfolio Constructor
The Portfolio subsref Method
Object Precedence
Specifying Precedence of User-Defined Classes
How MATLAB Determines Which Method to Call
Selecting a Method
Querying Which Method MATLAB Will Call
Scheduling Program Execution with Timers
Using a MATLAB Timer Object
Example: Displaying a Message
Creating Timer Objects
Timer Object Naming
Working with Timer Object Properties
Retrieving the Value of Timer Object Properties
Setting the Value of Timer Object Properties
Starting and Stopping Timers
Starting a Timer
Starting a Timer at a Specified Time
Stopping Timer Objects
Blocking the MATLAB Command Line
Creating and Executing Callback Functions
Associating Commands with Timer Object Events
Creating Callback Functions
Specifying the Value of Callback Function Properties
Timer Object Execution Modes
Executing a Timer Callback Function Once
Executing a Timer Callback Function Multiple Times
Handling Callback Function Queuing Conflicts
Deleting Timer Objects from Memory
Testing the Validity of a Timer Object
Deleting All Existing Timer Objects
Finding All Timer Objects in Memory
Finding Invisible Timer Objects
Improving Performance and Memory Usage
Analyzing Your Program's Performance
The M-File Profiler Utility
Stopwatch Timer Functions
Techniques for Improving Performance
Vectorizing Loops
Preallocating Arrays
Coding Loops in a MEX-File
Assigning to Variables
Operating on Real Data
Using Appropriate Logical Operators
Overloading Built-In Functions
Functions Are Generally Faster Than Scripts
Load and Save Are Faster Than File I/O Functions
Avoid Large Background Processes
Using Memory Efficiently
Memory Allocation for Arrays
Data Structures and Memory
Memory Management Functions
Strategies for Efficient Use of Memory
Resolving "Out of Memory" Errors
General Suggestions for Reclaiming Memory
Compressing Data in Memory
Increasing System Swap Space
Freeing Up System Resources on Windows Systems
Reloading Variables on UNIX Systems
Programming Tips
Command and Function Syntax
Syntax Help
Command and Function Syntaxes
Command Line Continuation
Completing Commands Using the Tab Key
Recalling Commands
Clearing Commands
Suppressing Output to the Screen
Help
Using the Help Browser
Help on Functions from the Help Browser
Help on Functions from the Command Window
Topical Help
Paged Output
Writing Your Own Help
Help for Subfunctions and Private Functions
Help for Methods and Overloaded Functions
Development Environment
Workspace Browser
Using the Find and Replace Utility
Commenting Out a Block of Code
Creating M-Files from Command History
Editing M-Files in EMACS
M-File Functions
M-File Structure
Using Lowercase for Function Names
Getting a Function's Name and Path
What M-Files Does a Function Use?
Dependent Functions, Built-Ins, Classes
Function Arguments
Getting the Input and Output Arguments
Variable Numbers of Arguments
String or Numeric Arguments
Passing Arguments in a Structure
Passing Arguments in a Cell Array
Program Development
Planning the Program
Using Pseudo-Code
Selecting the Right Data Structures
General Coding Practices
Naming a Function Uniquely
The Importance of Comments
Coding in Steps
Making Modifications in Steps
Functions with One Calling Function
Testing the Final Program
Debugging
The MATLAB Debug Functions
More Debug Functions
The MATLAB Graphical Debugger
A Quick Way to Examine Variables
Setting Breakpoints from the Command Line
Finding Line Numbers to Set Breakpoints
Stopping Execution on an Error or Warning
Locating an Error from the Error Message
Using Warnings to Help Debug
Making Code Execution Visible
Debugging Scripts
Variables
Rules for Variable Names
Making Sure Variable Names Are Valid
Don't Use Function Names for Variables
Checking for Reserved Keywords
Avoid Using i and j for Variables
Avoid Overwriting Variables in Scripts
Persistent Variables
Protecting Persistent Variables
Global Variables
Strings
Creating Strings with Concatenation
Comparing Methods of Concatenation
Store Arrays of Strings in a Cell Array
Converting Between Strings and Cell Arrays
Search and Replace Using Regular Expressions
Evaluating Expressions
Find Alternatives to Using eval
Assigning to a Series of Variables
Short-Circuit Logical Operators
Changing the Counter Variable within a for Loop
MATLAB Path
Precedence Rules
File Precedence
Adding a Directory to the Search Path
Handles to Functions Not on the Path
Making Toolbox File Changes Visible to MATLAB
Making Nontoolbox File Changes Visible to MATLAB
Change Notification on Windows
Program Control
Using break, continue, and return
Using switch Versus if
MATLAB case Evaluates Strings
Multiple Conditions in a case Statement
Implicit Break in switch-case
Variable Scope in a switch
Catching Errors with try-catch
Nested try-catch Blocks
Forcing an Early Return from a Function
Save and Load
Saving Data from the Workspace
Loading Data into the Workspace
Viewing Variables in a MAT-File
Appending to a MAT-File
Save and Load on Startup or Quit
Saving to an ASCII File
Files and Filenames
Naming M-files
Naming Other Files
Passing Filenames as Arguments
Passing Filenames to ASCII Files
Determining Filenames at Run-Time
Returning the Size of a File
Input/Output
File I/O Function Overview
Common I/O Functions
Readable File Formats
Using the Import Wizard
Loading Mixed Format Data
Reading Files with Different Formats
Reading ASCII Data into a Cell Array
Interactive Input into Your Program
Starting MATLAB
Getting MATLAB to Start Up Faster
Operating System Compatibility
Executing O/S Commands from MATLAB
Searching Text with grep
Constructing Paths and Filenames
Finding the MATLAB Root Directory
Temporary Directories and Filenames
Demos
Demos Available with MATLAB
For More Information
Examples