Feval (COM)

Выполните функцию MATLAB в сервере автоматизации

Резюме

Сигнатура метода IDL

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

Клиент MATLAB

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

Описание

result = Feval(h,'functionName',numout,arg1,arg2,...) выполняет MATLAB® функциональные functionName в сервере Автоматизации, подключенном к h. Имя функции учитывает регистр. Если functionName не имеет входных параметров, рассмотрите вызов Execute вместо этого.

COM-функции доступны в Microsoft® Windows® только системы.

Укажите количество выходов, возвращенных функцией в 1-by- 1 double массив, numout. Сервер возвращает выход из функции в массиве ячеек, result.

Можно задать целых 32 входных параметров, которые будут переданы в функцию. Эти аргументы следуют numout в Feval список аргументов. В следующей таблице показаны способы передачи аргумента.

Передающий механизм

Описание

Передайте само значение

Чтобы передать любое числовое или символьное значение, задайте значение в Feval список аргументов:

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

Передайте переменную клиента

Чтобы передать аргумент, назначенный переменной в клиенте, укажите только имя переменной:

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

Ссылка на переменную сервера

Чтобы ссылаться на переменную, определенную в сервере, задайте имя переменной, за которой следует значение equals (=) знак:

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

MATLAB не выполняет переназначение переменной сервера.

Примеры

расширить все

В этом примере показано, как передать строковые аргументы в MATLAB strcat команда с использованием Feval.

Создайте приложение Visual Basic .NET со следующим кодом.

type fevalPassingArguments.vb
Dim Matlab As Object 
Dim out As Object 
out = Nothing 
Matlab = CreateObject("matlab.application") 
Matlab.Feval("strcat",1,out,"hello"," world") 
Dim clistr As String
clistr = " world"
Matlab.Feval("strcat",1,out,"hello",clistr)
Matlab.PutCharArray("srvstr","base"," world")
Matlab.Feval("strcat",1,out,"hello","srvstr=")

В этом примере показано, как вернуть filepath, name, и ext аргументы из fileparts функция.

Feval возвращает данные из вычисленной функции в массиве ячеек. Массив ячеек имеет по одной строке на каждое возвращаемое значение. Вы управляете количеством значений возврата, используя Feval numout аргумент.

Создайте Visual Basic .NET клиент со следующим кодом.

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

В этом примере показано, как вернуть измененную переменную сервера.

Создайте матрицу, A, на сервере.

Изменение формы A.MATLAB интерпретирует A в выражении 'A=' как имя переменной сервера.

The reshape функция не изменяет переменную A. A не изменяется.

Чтобы получить результат reshape function, использовать numout аргумент для назначения значения C.

Создайте приложение Visual Basic .NET со следующим кодом.

type fevalModifiedServerVariables.vb
Dim Matlab As Object 
Dim rows As Double 
Dim cols As Double 
Dim out As Object 
out = Nothing 
Dim data(7) As Double 
For i = 0 To 7 
    data(i) = i * 15 
Next i 
Matlab = CreateObject("matlab.application") 
Matlab.PutWorkspaceData("A", "base", data) 
rows = 4 
cols = 2 
Matlab.Feval("reshape", 1, out, "A=", rows, cols)

Совет

  • Чтобы отобразить выход из Feval в окне клиента присвойте возврат значение.

Представлено до R2006a