Using the MATLAB® Engine to Call MATLAB® Software from C and Fortran Programs

Introduction

Some of the things you can do with the MATLAB® engine are

The MATLAB engine operates by running in the background as a separate process from your own program. This offers several advantages:

The Engine Library

The engine library contains the following routines for controlling the computation engine. The names begin with the three-letter prefix eng.

C Engine Routines

FunctionPurpose

engOpen

Start up MATLAB engine

engClose

Shut down MATLAB engine

engGetVariable

Get a MATLAB array from the engine

engPutVariable

Send a MATLAB array to the engine

engEvalString

Execute a MATLAB command

engOutputBuffer

Create a buffer to store MATLAB text output

engOpenSingleUse

Start a MATLAB engine session for single, nonshared use

engGetVisible

Determine visibility of MATLAB engine session

engSetVisible

Show or hide MATLAB engine session

Fortran Engine Routines

FunctionPurpose

engOpen

Start up MATLAB engine

engClose

Shut down MATLAB engine

engGetVariable

Get a MATLAB array from the engine

engPutVariable

Send a MATLAB array to the engine

engEvalString

Execute a MATLAB command

engOutputBuffer

Create a buffer to store MATLAB text output

The engine also uses the mx–prefixed API routines discussed in Creating C Language MEX-Files and Creating Fortran MEX-Files.

Communicating with MATLAB® Software

On UNIX systems, the engine library communicates with the engine using pipes, and, if needed, rsh for remote execution. On Microsoft® Windows® systems, the engine library communicates with the engine using a Component Object Model (COM) interface. For more information, see COM Support for MATLAB® Software.

GUI-Intensive Applications

If you have graphical user interface (GUI) intensive applications that execute a lot of callbacks through the MATLAB engine, you should force these callbacks to be evaluated in the context of the base workspace. Use evalin to specify that the base workspace be used in evaluating the callback expression, as follows:

engEvalString(ep, "evalin('base', expression)")

Specifying the base workspace in this manner ensures MATLAB processes the callback correctly and returns results for that call.

This does not apply to computational applications that do not execute callbacks.


[1] UNIX is a registered trademark of The Open Group in the United States and other countries.

  


 © 1984-2008- The MathWorks, Inc.    -   Site Help   -   Patents   -   Trademarks   -   Privacy Policy   -   Preventing Piracy   -   RSS