Using the C Math Library |
 |
- Introduction
- Who Should Read This Book
- MATLAB C Math Library Features
- Unsupported MATLAB Features
- Library Routine Naming Convention
- MATLAB C Math Library Documentation
- How This Book Is Organized
- Accessing Online Reference Documentation
- Additional Sources of Information
- Installing the MATLAB C Math Library
- Installation with MATLAB
- Installation Without MATLAB
- Verifying a UNIX Installation
- Verifying a PC Installation
- Introduction
- Example - Writing a Simple Program
- Output
- Building Stand-Alone C Applications
- Packaging Stand-Alone Applications
- Overview
- Compiler Options Files
- Building UNIX Applications
- Configuring the Build Environment
- Locating Options Files
- Using the System Compiler
- Changing the Default Compiler
- Modifying the Options File
- Temporarily Changing the Compiler
- Building an Application
- Locating Shared Libraries
- Running Your Application
- mbuild Options
- Building Microsoft Windows Applications
- Configuring the Build Environment
- Locating Options Files
- Systems with Exactly One C/C++ Compiler
- Systems with More than One Compiler
- Changing the Default Compiler
- Modifying the Options File
- Combining Customized C and C++ Options Files
- Temporarily Changing the Compiler
- Building an Application
- Shared Libraries (DLLs)
- Running Your Application
- mbuild Options
- Distributing Stand-Alone Applications
- Packaging the MATLAB Math Run-Time Libraries
- Installing Your Application
- On UNIX Systems
- On PCs
- Problem Starting Stand-Alone Application
- Building Shared Libraries
- Troubleshooting mbuild
- Options File Not Writable
- Directory or File Not Writable
- mbuild Generates Errors
- Compiler and/or Linker Not Found
- mbuild Not a Recognized Command
- Cannot Locate Your Compiler (PC)
- Internal Error When Using mbuild -setup (PC)
- Verification of mbuild Fails
- Linking Applications Without mbuild
- Introduction
- Supported MATLAB Array Types
- MATLAB Array C Data Type
- Numeric Arrays
- Creating Numeric Arrays
- Using Numeric Array Creation Routines
- Creating Numeric Arrays by Calling Arithmetic Routines
- Creating Numeric Arrays by Concatenation
- Creating Numeric Arrays by Assignment
- Initializing a Numeric Array with Data
- Column-Major Storage versus Row-Major Storage
- Example Program: Creating Numeric Arrays (ex1.c)
- Sparse Matrices
- Creating a Sparse Matrix
- Converting an Existing Matrix into Sparse Format
- Creating a Sparse Matrix from Data
- Converting a Sparse Matrix to Full Matrix Format
- Evaluating Arrays for Sparse Storage
- Character Arrays
- Creating MATLAB Character Arrays
- Using Explicit Character Array Creation Routines
- Converting Numeric Arrays to Character Arrays
- Creating Multidimensional Arrays of Strings
- Accessing Individual Strings in an Array of Strings
- Cell Arrays
- Creating Cell Arrays
- Using the Cell Array Creation Routine
- Using Cell Array Conversion Routines
- Using Concatenation to Create Cell Arrays
- Using Assignment to Create Cell Arrays
- Displaying the Contents of a Cell Array
- MATLAB Structures
- Creating Structures
- Using a Structure Creation Routine
- Creating Multidimensional Arrays of Structures
- Using a Structure Conversion Routine
- Using Assignment to Create Structures
- Performing Common Array Programming Tasks
- Allocating and Freeing MATLAB Arrays
- Displaying MATLAB Arrays
- Formatting Output
- Determining Array Type
- Determining Array Size
- Length of a Single Dimension
- Dimension Return Values
- Determining Array Shape
- Introduction
- Automated Versus Explicit Memory Management
- Explicit Memory Management
- Automated Memory Management
- Temporary and Bound Arrays
- Comparison of Memory Management Schemes
- Benefits of Automated Memory Management
- Compatibility Between Memory Management Schemes
- Avoiding Memory Leaks in Your Functions
- Using Automated Memory Management
- Function Template
- Main Routine Template
- Enabling Memory Management
- Creating Bound Arrays
- Assigning Arrays to mxArray* Variables
- Assigning a Value to an Array Destroys Its Previous Value
- Assignment by Value
- Nesting Calls to Functions that Return Arrays
- Deleting Bound Arrays
- Restoring the Previous Context
- Arguments to mlfRestorePreviousContext( )
- What Happens to the Array Arguments?
- Purpose of mlfRestorePreviousContext( )
- Returning an Array
- Argument and Return for mlfReturnValue( )
- Changing Bound Arrays to Temporary Arrays
- Handling Return Values
- Example - Managing Array Memory (ex2.c)
- Example Without Automated Memory Management
- Restrictions
- Recommendation
- Replacing Allocation and Deallocation Routines
- Introduction
- Terminology
- Indexing Functions
- Array Storage
- Calling the Indexing Functions
- Specifying the Target Array
- Specifying the Index String
- What an Indexing String Specifies
- Complex Indexing Expressions
- Nesting Indexing Operations
- Specifying the Values for Indices
- Specifying a Source Array for Assignments
- Assumptions for the Code Examples
- One-Dimensional Indexing
- Overview
- Selecting a Single Element
- Selecting a Vector
- Specifying a Vector Index with mlfEnd()
- Selecting a Matrix
- Selecting the Entire Matrix As a Column Vector
- N-Dimensional Indexing
- Overview
- Selecting a Single Element
- Selecting a Vector of Elements
- Specifying a Vector Index with mlfEnd( )
- Selecting a Row or Column
- Selecting a Matrix
- Selecting Entire Rows or Columns
- Selecting an Entire Matrix
- Extending Two-Dimensional Indexing to N Dimensions
- Logical Indexing
- 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
- Assigning Values to Array Elements
- Overview
- Assigning to a Single Element
- Assigning to Multiple Elements
- Assigning to a Subarray
- Assigning to All Elements
- Extending Two-Dimensional Assignment to N Dimensions
- Deleting Array Elements
- Deleting Multiple Elements
- Cell Array Indexing
- Overview
- Tips for Working with Cell Arrays
- 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
- Indexing the First Level
- Indexing the Second Level
- Assigning Values to a Cell Array
- Deleting Elements from a Cell Array
- Deleting a Single Element
- Deleting an Entire Dimension
- Structure Array Indexing
- Overview
- Tips for Working with Structure Arrays
- 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
- Deleting a Structure from the Array
- Deleting a Field from All the Structures in an Array
- Deleting an Element from an Array Contained by a Field
- Comparison of C and MATLAB Indexing Syntax
- Introduction
- How to Call MATLAB Functions
- One Output Argument and Only Required Input Arguments
- Optional Input Arguments
- Optional Output Arguments
- Optional Input and Output Arguments
- Variable Input Arguments
- Pure Varargin Functions
- Variable Output Arguments
- Constructing an mlfVarargoutList
- Pure Varargout Functions
- Summary of Library Calling Conventions
- Exceptions to the Calling Conventions
- Example - Calling Library Routines (ex3.c)
- Calling Operators
- Passing Functions As Arguments to Library Routines
- How Function-Functions Use mlfFeval( )
- How mlfFeval() Works
- Extending the mlfFeval() Table
- Writing a Thunk Function
- Example - Passing Functions As Arguments (ex4.c)
- Output
- Replacing Argument Lists with a Cell Array
- Positioning the Indexed Cell Array
- Exception for Built-In Library Functions
- Introduction
- Writing Data to a MAT-File
- Reading Data from a MAT-File
- Example - Saving and Loading Data (ex5.c)
- Introduction
- Error Handling Overview
- Customizing Error Handling
- Continuing Processing After Errors
- Example - Defining Try/Catch Blocks (ex6.c)
- Replacing the Default Library Error Handler
- Writing an Error Handler
- Registering Your Error Handler
- Example - Adding an Error Handler
- Defining a Print Handler
- Providing Your Own Print Handler
- Sending Output to a GUI
- Example - Writing Output to X Windows/Motif
- Example - Writing Output to Microsoft Windows
- Introduction
- Organization of the MATLAB Math Libraries
- The MATLAB Built-In Library
- General Purpose Commands
- Operators and Special Functions
- Elementary Matrices and Matrix Manipulation
- Elementary Math Functions
- Numerical Linear Algebra
- Data Analysis and Fourier Transform Functions
- Character String Functions
- File I/O Functions
- Data Types
- Time and Dates
- Multidimensional Array Functions
- Cell Array Functions
- Structure Functions
- Sparse Matrix Functions
- Utility Routines
- MATLAB M-File Math Library
- 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
- Time and Dates
- Multidimensional Array Functions
- Cell Array Functions
- Structure Functions
- Sparse Matrix Functions
- Array Access and Creation Library
- Directory Organization on UNIX
- <matlab>/bin
- <matlab>/extern/lib/$ARCH
- <matlab>/extern/include
- <matlab>/extern/examples/cmath
- Directory Organization on Microsoft Windows
- <matlab>\bin
- <matlab>\extern\include
- <matlab>\extern\examples\cmath
- Introduction
- Error Messages
- Warning Messages
| Getting Started | |