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- 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 не повторно присваивает серверную переменную.

Примеры

свернуть все

В этом примере показано, как передать аргументы строки strcat MATLAB команда с помощью 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Имя, и 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 функция не изменяет переменную AA неизменно.

Получить результат 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