Feval (COM) - Evaluate MATLAB® function in server

Synopsis

MATLAB® Client

result = h.Feval('functionname', numout, arg1, arg2, ...) 
result = Feval(h, 'functionname', numout, arg1, arg2, ...)
result = invoke(h, 'Feval', 'functionname', numout, ...
arg1, arg2, ...)

Method Signatures

HRESULT Feval([in] BSTR functionname, [in] long nargout, 
[out] VARIANT* result, [in, optional] VARIANT arg1, arg2, ...)

Microsoft® Visual Basic® Client

Feval(String functionname, long numout, 
arg1, arg2, ...) As Object

Description

Feval executes the MATLAB function specified by the string functionname in the Automation server attached to handle h.

Indicate the number of outputs to be returned by the function in a 1-by-1 double array, numout. The server returns output from the function in the cell array, result.

You can specify as many as 32 input arguments to be passed to the function. These arguments follow numout in the Feval argument list. There are four ways to pass an argument to the function being evaluated.

Passing Mechanism

Description

Pass the value itself

To pass any numeric or string value, specify the value in the Feval argument list:

a = h.Feval('sin', 1, -pi:0.01:pi);

Pass a client variable

To pass an argument that is assigned to a variable in the client, specify the variable name alone:

x = -pi:0.01:pi;
a = h.Feval('sin', 1, x);

Reference a server variable

To reference a variable that is defined in the server, specify the variable name followed by an equals (=) sign:

h.PutWorkspaceData('x', 'base', -pi:0.01:pi);
a = h.Feval('sin', 1, 'x=');

Note that the server variable is not reassigned.

Remarks

If you want output from Feval to be displayed at the client window, you must assign a returned value.

Server function names, like Feval, are case sensitive when using the first two syntaxes shown in the Syntax section.

There is no difference in the operation of the three syntaxes shown above for the MATLAB client.

Examples

Passing Arguments — MATLAB® Client

This section contains a number of examples showing how to use Feval to execute MATLABcommands on a MATLAB Automation server.

Visual Basic® .NET Client

Here are the same examples shown above, but written for a Visual Basic® .NET client. These examples return the same strings as shown above.

Feval Return Values — MATLAB® Client.  Feval returns data from the evaluated function in a cell array. The cell array has one row for every return value. You can control how many values are returned using the second input argument to Feval, as shown in this example.

The second argument in the following example specifies that Feval return three outputs from the fileparts function. As is the case here, you can request fewer than the maximum number of return values for a function (fileparts can return up to four):

a = h.Feval('fileparts', 3, 'd:\work\ConsoleApp.cpp')

MATLAB displays:

a =
    'd:\work'
    'ConsoleApp'
    '.cpp'

Convert the returned values from the cell array a to char arrays:

a{:}

MATLAB displays:

ans =
d:\work

ans =
ConsoleApp

ans =
.cpp

Feval Return Values — Visual Basic® .NET Client

Here is the same example, but coded in Visual Basic. Define the argument returned by Feval as an Object.

Dim Matlab As Object
Dim out As Object
Matlab = CreateObject("matlab.application")
out = Matlab.Feval("fileparts", 3, "d:\work\ConsoleApp.cpp")

See Also

Execute, PutFullMatrix, GetFullMatrix, PutCharArray, GetCharArray

  


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