Getting Started

    Introduction
        Overview of the MATLAB C++ Math Library
        Who Should Read This Book
        New MATLAB C++ Math Library Features
        MATLAB C++ Math Library Documentation
        Getting Started Quickly

    Installing the C++ Math Library
        Installation with MATLAB
        Installation Without MATLAB
        Verifying a UNIX Installation
        Verifying a PC Installation
        Installing Your C++ Compiler

    Building C++ Applications
        Overview

    Building a Stand-Alone Application on UNIX
        Configuring the Build Environment
        Building an Application
        mbuild Options

    Building a Stand-Alone Application on PCs
        Configuring the Build Environment
        Building an Application
        mbuild Options

    Troubleshooting mbuild
    Linking Applications Without mbuild
    Distributing Stand-Alone Applications
        Packaging the MATLAB Math Run-Time Libraries
        Installing Your Application
        Problem Starting Stand-Alone Application

Fundamentals

    MATLAB Basics
        Data Types
        Operators
        Functions
        Input and Output
        Errors
        Flow of Control

    MATLAB for C++ Programmers
    C++ for MATLAB Users
        How the Library Is Similar to MATLAB
        How C++ and the Library Differ from MATLAB

    MATLAB C++ Math Library Basics
        Data Types
        Operators
        Functions
        Input and Output
        Errors
        Memory Management

    Stand-Alone Programs
        Example Program: Writing Simple Functions (ex4.cpp)
        Writing Efficient Programs

    Learning More

Working with MATLAB Arrays

    Overview
        Supported MATLAB Array Types
        MATLAB Array C++ Object

    Numeric Arrays
        Creating Numeric Arrays
        Initializing a Numeric Array with Data
        Example Program: Creating Arrays and Array I/O (ex1.cpp)

    Sparse Matrices
        Creating a Sparse Matrix
        Converting a Sparse Matrix to Full Matrix Format
        Evaluating Arrays for Sparse Storage

    Character Arrays
        Creating MATLAB Character Arrays

    Cell Arrays
        Creating Cell Arrays
        Displaying the Contents of a Cell Array

    MATLAB Structures
        Creating Structures

    Performing Common Array Programming Tasks
        Converting Data to MATLAB Arrays
        Determining Array Size

Indexing into Arrays

    Overview
        Terminology
        Dimensions and Subscripts in MATLAB
        Dimensions and Subscripts in the MATLAB C++ Math Library
        Array Storage

    Using One-Dimensional Subscripts
        Overview
        Selecting a Single Element
        Selecting a Vector
        Selecting a Matrix
        Selecting the Entire Matrix As a Column Vector

    Using N-Dimensional Subscripts
        Overview
        Selecting a Single Element
        Selecting a Vector of Elements
        Selecting a Matrix
        Extending Two-Dimensional Indexing to N Dimensions

    Using Logical Subscripts
        Overview
        Using a Logical Matrix As a One-Dimensional Index
        Using Two Logical Vectors as Indices
        Using One colon() Index and One Logical Vector as Indices
        Using a Scalar and a Logical Vector
        Extending Logical Indexing to N Dimensions

    Using Indexing in Assignment Statements
        Overview
        Assigning to a Single Element
        Assigning to a Multiple Elements
        Assigning to a Subarray
        Assigning to All Elements
        Extending Two-Dimensional Assignment to N Dimensions

    Deleting Elements from an Array
    Indexing into Cell Arrays
        Overview
        Referencing a Cell in a Cell Array
        Referencing a Subset of a Cell Array
        Referencing the Contents of a Cell
        Referencing a Subset of the Contents of a Cell
        Indexing Nested Cell Arrays
        Assigning Values to a Cell Array
        Deleting Elements from a Cell Array

    Indexing into MATLAB Structure Arrays
        Overview
        Accessing a Field
        Accessing the Contents of a Structure Field
        Assigning Values to a Structure Field
        Assigning Values to Elements in a Field
        Referencing a Single Structure in a Structure Array
        Referencing into Nested Structures
        Accessing the Contents of Structures Within Cells
        Deleting Elements from a Structure Array

    Indexing Techniques
        Duplicating a Row or Column
        Concatenating Subscripts

    C++ and MATLAB Indexing Syntax
    The mwIndex Class
    Programming Efficient Indices

Calling Library Functions

    Overview
    How to Call C++ Library Functions
        Returning One Result and Passing Only Required Input Arguments
        Passing Optional Input Arguments
        Passing Optional Output Arguments
        Passing Optional Input and Output Arguments
        Passing Any Number of Inputs
        Passing Any Number of Outputs
        Summary of Library Calling Conventions
        Example Program: Calling Library Functions (ex2.cpp)

    How to Call Operators
    Example Program: Passing Functions As Arguments (ex3.cpp)
    Representing Input Arguments As a Cell Array

Using the Mathematical Operators

    Overview
    Using the Operators
    Defining Your Own Operators

Printing, Exceptions, and Memory Management

    Defining a Print Handler
        Providing Your Own Print Handler
        Using the Print Handler to Print Your Own Messages
        Output to a GUI

    Handling Exceptions
        C++ Exception Handling Overview
        Handling C++ Math Library Exceptions in Your Code
        Example Program: Handling Exceptions (ex5.cpp)
        Replacing the Default Library Error Handler
        Exception Handling in the MATLAB C++ Math Library

    Memory Management
        Setting Up Your Own Memory Management Routines
        Performance and Efficiency
        The Space-Time Continuum

Array Input and Output

    Overview
    Using Array Stream I/O
        Overview
        Example - Array Stream I/O (ex1.cpp)
        Stream I/O Format Definitions
        Using Stream I/O to Files
        Using Streams for Interprocess Communication

    Using File I/O Functions
        Specifying Library File I/O Functions
        Example - Using File I/O Functions (ex6.cpp)

    Importing and Exporting MAT-File Data
        Exporting Array Data to a MAT-File
        Importing Array Data from a MAT-File
        Example - Using load() and save() (ex7.cpp)

Translating from MATLAB to C++

    Differences Between C++ and MATLAB
    Syntax
    Variable Declaration
    Function Calling Conventions
    Control Structure
    Logical Values
    Name Conflicts with Standard C Library Functions
        Casting an Argument to Avoid a Name Conflict
        Renaming Functions to Avoid a Name Conflict

    Example Program: Rewriting roots.m in C++ (ex8.cpp)
        The M-File roots() Function
        The C++ roots() Function

mwArray Class Interface

    Introduction
    Constructors
    Indexing and Subscripts
        Array Indexing
        Cell Content Indexing
        Structure Field Indexing

    User-Defined Conversions
    Memory Management
    Operators
    Array Size
    Extracting Data from an mwArray
        GetData( )
        SetData( )
        ExtractScalar( ) and ExtractData( )
        ToString( )

Library Routines

    Introduction
    Operators
        Arithmetic Operators
        Relational Operators
        Miscellaneous Operators

    MATLAB Functions
        General Purpose Commands
        Operators and Special Functions
        Elementary Matrices and Matrix Manipulation
        Elementary Math Functions
        Specialized Math Functions
        Numerical Linear Algebra
        Data Analysis and Fourier Transform Functions
        Polynomial and Interpolation Functions
        Function Functions and ODE Solvers
        Character String Functions
        File I/O Functions
        Data Types
        Time and Dates
        Multidimensional Array Functions
        Cell Array Functions
        Structure Functions
        Sparse Matrix Functions

    Utility Functions
    Array Access Functions

Directory Organization

    Introduction
    Directory Organization on UNIX
        <matlab>/bin
        <matlab>/extern/lib/$ARCH
        <matlab>/extern/include
        <matlab>/extern/include/cpp
        <matlab>/extern/examples/cppmath

    Directory Organization on Microsoft Windows
        <matlab>\bin
        <matlab>\extern\lib
        <matlab>\extern\include
        <matlab>\extern\include\cpp
        <matlab>\extern\examples\cppmath

Exception Classes

    Overview
    Exception Class Descriptions

Error Messages

    Overview
        Error Types
        Reporting Errors

    Alphabetized Error Messages