exponenta event banner

Феваль (COM)

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

Резюме

Подпись метода IDL

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

Клиент Microsoft Visual Basic

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около-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);

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

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

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=' как имя переменной сервера.

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

Чтобы получить результат reshape , используйте 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