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);

Сошлитесь на серверную переменную

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

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, name, and 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