Monday, June 18, 2007

Using the MATLAB Engine

http://www.mathworks.com

Some of the things you can do with the MATLAB engine are
  • Call a math routine, for example, to invert an array or to compute an FFT from your own program. When employed in this manner, MATLAB is a powerful and programmable mathematical subroutine library.

  • Build an entire system for a specific task, for example, radar signature analysis or gas chromatography, where the front end (GUI) is programmed in C and the back end (analysis) is programmed in MATLAB, thereby shortening development time.

The following topics provide information for using MATLAB engine:

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

  • On UNIX, the MATLAB engine can run on your machine, or on any other UNIX machine on your network, including machines of a different architecture. Thus you could implement a user interface on your workstation and perform the computations on a faster machine located elsewhere on your network. The description of the engOpen function offers further information.

  • Instead of requiring that all of MATLAB be linked to your program (a substantial amount of code), only a small engine communication library is needed.

The Engine Library

The engine library contains the following routines for controlling the MATLAB computation engine. Their names all begin with the three-letter prefix eng. These tables list all the available engine functions and their purposes.

C Engine Routines

FunctionPurpose

engOpen

Start up MATLAB engine

engClose

Shut down MATLAB engine

engGetVariable

Get a MATLAB array from the MATLAB engine

engPutVariable

Send a MATLAB array to the MATLAB 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 MATLAB engine

engPutVariable

Send a MATLAB array to the MATLAB engine

engEvalString

Execute a MATLAB command

engOutputBuffer

Create a buffer to store MATLAB text output

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

Communicating with MATLAB

On UNIX, the engine library communicates with the MATLAB engine using pipes, and, if needed, rsh for remote execution. On Microsoft Windows, the engine library communicates with MATLAB using a Component Object Model (COM) interface. COM and DDE Support (Windows Only), contains a detailed description of COM.

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 is to 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.

No comments: