Интегрируйте функцию с переменным количеством аргументов

Этот пример показывает вам, как создать приложение.NET с помощью MATLAB® функция, которая берет переменное количество аргументов вместо всего один.

В этом примере вы выполняете следующие шаги:

  • Используйте продукт MATLAB Compiler SDK™, чтобы преобразовать функцию MATLAB drawgraph к методу класса.NET (Plotter) и перенесите класс в блок.NET (VarArgComp). drawgraph функционируйте отображает график входных параметров и называется как метод Plotter класс.

  • Доступ к компоненту в приложении C# (VarArgApp.cs) или Visual Basic® приложение (VarArgApp.vb) путем инстанцирования Plotter класс и использование MWArray представлять данные.

  • Создайте и запустите VarArgDemoApp приложение с помощью Visual Studio® Среда разработки.NET.

Файлы

Функции MATLABdrawgraph.m
extractcoords.m
Местоположение функции MATLABmatlabroot\toolbox\dotnetbuilder\Examples\VSVersion\NET\VarArgExample\VarArgComp\
Участок кода C#matlabroot\toolbox\dotnetbuilder\Examples\VSVersion\NET\VarArgExample\VarArgCSApp\VarArgApp.cs
Участок кода Visual Basicmatlabroot\toolbox\dotnetbuilder\Examples\VSVersion\NET\VarArgExample\VarArgVBApp\VarArgApp.vb

Процедура

  1. Скопируйте следующую папку, которая поставляется с продуктом MATLAB к вашей папке работы:

    matlabroot\toolbox\dotnetbuilder\Examples\VSVersion\NET\VarArgExample
    

    В командной строке MATLAB перейдите к новому VarArgExample\VarArgComp подпапка в вашей папке работы.

  2. Исследуйте drawgraph и extractcoords функции.

    function [xyCoords] = DrawGraph(colorSpec, varargin)
    
        numVarArgIn= length(varargin);
        xyCoords= zeros(numVarArgIn, 2);
    
        for idx = 1:numVarArgIn
            xCoord = varargin{idx}(1);
            yCoord = varargin{idx}(2);
            
            x(idx) = xCoord;
            y(idx) = yCoord;
            
            xyCoords(idx,1) = xCoord;
            xyCoords(idx,2) = yCoord;
        end
        
        xmin = min(0, min(x));
        ymin = min(0, min(y));
    
        axis([xmin fix(max(x))+3 ymin fix(max(y))+3])
        
        plot(x, y, 'color', colorSpec);
    
     
    
    function [varargout] = ExtractCoords(coords)
    
        for idx = 1:nargout
            varargout{idx}= coords(idx,:);
        end
    

  3. Создайте компонент.NET с приложением Library Compiler или compiler.build.dotNETAssembly использование следующей информации:

    Поле Значение
    Имя библиотекиVarArgComp
    ClassName Plotter
    Файлы, чтобы скомпилироватьextractcoords.m   drawgraph.m

    Например, если вы используете compiler.build.dotNETAssemblyВвод:

    buildResults = compiler.build.dotNETAssembly(["extractcoords.m","drawgraph.m"], ...
    'AssemblyName','VarArgComp', ...
    'ClassName','Plotter');

    Для получения дополнительной информации смотрите, что инструкции в Генерируют блок.NET и Создают Приложение.NET.

  4. Решите, используете ли вы C# или Visual Basic, чтобы получить доступ к компоненту.

    • C

      Если вы используете C#, запишите исходный код для приложения C#, это получает доступ к компоненту.

      Пример приложения для этого примера находится в VarArgExample\VarArgCSApp\VarArgApp.cs.

       VarArgApp.cs

      Следующие операторы являются альтернативными способами вызвать drawgraph метод:

      data= (MWNumericArray)plotter.drawgraph(colorSpec, 
                      coords[0], coords[1], coords[2],coords[3], coords[4]);
      ...
      data= (MWNumericArray)plotter.drawgraph((MWArray)colorSpec, coords);
      
    • Visual Basic

      Если вы используете Visual Basic, запишите исходный код для приложения Visual Basic, это получает доступ к компоненту.

      Пример приложения для этого примера находится в VarArgExample\VarArgVBApp\VarArgApp.vb.

       VarArgApp.vb

      Следующие операторы являются альтернативными способами вызвать drawgraph метод:

      data = CType(plotter.drawgraph(colorSpec, coords(0), coords(1), coords(2), 
             coords(3), coords(4)), MWNumericArray)
      ...
      data = CType(plotter.drawgraph(colorSpec, coords), MWNumericArray)

    В любом случае, VarArgApp программа делает следующее:

    • Инициализирует три массива (colorSpecданные, и coords) использование MWArray библиотека классов

    • Создает Plotter объект

    • Вызывает extracoords и drawgraph методы

    • Использование MWNumericArray представлять данные, необходимые методам

    • Использует try-catch блокируйтесь, чтобы отловить и обработать любые исключения

  5. Откройте файл проекта.NET, который соответствует вашему языку приложения с помощью Visual Studio.

    • C

      Если вы используете C#, VarArgCSApp папка содержит файл проекта Visual Studio.NET для этого примера. Откройте проект в Visual Studio.NET путем двойного клика по VarArgCSApp.csproj в Windows® Проводник. Можно также открыть его с рабочего стола путем щелчка правой кнопкой по VarArgCSApp.csproj и выбора Open Outside MATLAB.

    • Visual Basic

      Если вы используете Visual Basic, VarArgVBApp папка содержит файл проекта Visual Studio.NET для этого примера. Откройте проект в Visual Studio.NET путем двойного клика по VarArgVBApp.vbproj в Windows Explorer. Можно также открыть его с рабочего стола путем щелчка правой кнопкой по VarArgVBApp.vbproj и выбора Open Outside MATLAB.

  6. Создайте ссылку на свой файл блока VarArgComp.dll расположенный в папке, где вы сгенерировали или установили блок.

  7. Создайте ссылку на MWArray API.

    Если MATLAB установлен в вашей системеmatlabroot\toolbox\dotnetbuilder\bin\win64\<framework_version>\MWArray.dll
    Если MATLAB Runtime установлен в вашей системе<MATLAB_RUNTIME_INSTALL_DIR>\toolbox\dotnetbuilder\bin\win64\<framework_version>\MWArray.dll

  8. Создайте и запустите VarArgApp приложение в Visual Studio.NET.

    Программа отображает следующий вывод:

    result=
         1     2
         2     4
         3     6
         4     8
         5    10
    
    A figure that displays the line created by the coordinates {1, 2}, {2, 4}, {3, 6}, {4, 8}, and {5, 10}.

Смотрите также

| |

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте