Несколько функций MATLAB в классе компонента

Цель

Цель примера состоит в том, чтобы показать вам следующее:

  • Как присвоить больше чем одну функцию MATLAB® классу компонента

  • Как получить доступ к компоненту в приложении C# (MatrixMathApp.cs) путем инстанцирования Factor и использование MWArray библиотека классов, чтобы обработать преобразование данных

    Примечание

    Для получения информации об этих классах преобразования данных см. Справочник по библиотеке классов MWArray MATLAB, доступный в matlabroot\help\dotnetbuilder\MWArrayAPI папка, где matlabroot представляет вашу папку установки MATLAB

  • Как создать и запустить MatrixMathApp приложение, с помощью Визуальной среды разработки Studio®.NET

Этот пример создает компонент.NET, чтобы выполнить матричную математику. Пример создает программу, которая выполняет Холесский, LU и QR-факторизации на простой трехдиагональной матрице (матрица конечной разности) со следующей формой:

A = [ 2 -1  0  0  0
     -1  2 -1  0  0
      0 -1  2 -1  0
      0  0 -1  2 -1
      0  0  0 -1  2 ]

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

Процедура

  1. Если вы уже не сделали так, скопируйте файлы для этого примера можно следующим образом:

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

      matlabroot\toolbox\dotnetbuilder\Examples\VSVersion\NET\MatrixMathExample
      
    2. В командной строке MATLAB, cd к новому MatrixMathExample подпапка в вашей папке работы.

  2. Запишите функции MATLAB, когда вы были бы любая функция MATLAB.

    Код для cholesky, ludecomp, и qrdecomp функции уже находятся в вашей папке работы в MatrixMathExample\MatrixMathComp\.

  3. Из галереи Apps MATLAB откройте приложение Library Compiler.

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

    Название проектаMatrixMathComp
    ClassName Factor
    Файлы, чтобы скомпилироватьcholesky    ludecomp    qrdecomp

  5. Запишите исходный код для приложения, это получает доступ к компоненту.

    Пример приложения для этого примера находится в MatrixMathExample\MatrixMathCSApp\MatrixMathApp.cs.

    Распечатку программ показывают здесь.

     MatrixMathApp.cs

    Оператор

     Factor factor= new Factor(); 

    создает экземпляр класса Factor.

    Следующие операторы вызывают методы, которые инкапсулируют функции MATLAB:

    argOut= factor.cholesky((MWArray)matrix);
    ...
    argsOut= factor.ludecomp(2, matrix);
    ...
    argsOut= factor.qrdecomp(2, matrix);
    ...

    Примечание

    Смотрите Понимание Программы MatrixMath для получения дополнительной информации о структуре этой программы.

  6. Создайте the MatrixMathApp приложение с помощью Visual Studio.NET.

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

    2. Добавьте ссылку на MWArray компонент, который является matlabroot\toolbox\dotnetbuilder\bin\architecture\framework_version
      \mwarray.dll.
      Смотрите Поддерживаемые Версии Microsoft.NET Framework для списка поддерживаемых версий среды.

    3. При необходимости добавьте (или зафиксируйте местоположение), ссылка на MatrixMathComp компонент, который вы создали на предыдущем шаге. (Компонент, MatrixMathComp.dll, находится в \MatrixMathExample\MatrixMathComp\x86\V2.0\Debug\distrib подпапка вашей рабочей области.)

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

Функции MATLAB, которые будут инкапсулироваться

Следующий код задает функции MATLAB, используемые в примере.

 cholesky.m

 ludecomp.m

 qrdecomp.m

Понимание программы MatrixMath

MatrixMath программа берет один или два аргумента из командной строки. Первый аргумент преобразован в целочисленный порядок тестовой матрицы. Если строка sparse передается в качестве второго аргумента, разреженная матрица создается, чтобы содержать тестовый массив. Холесский, LU и QR-факторизации затем вычисляются, и результаты отображены.

Основной метод имеет три части:

  • Первая часть настраивает входную матрицу, создает новый факторный объект и вызывает cholesky, ludecomp, и qrdecomp методы. Эта часть выполняется в try блок. Это сделано так, чтобы, если исключение происходит во время выполнения, соответствующего catch блок будет выполняться.

  • Второй частью является catch блок. Код распечатывает сообщение к стандартному выводу, чтобы сообщить пользователю об ошибке, которая произошла.

  • Третьей частью является finally блокируйтесь, чтобы вручную очистить нативные ресурсы перед выходом.

    Примечание

    Это дополнительное как сборщик "мусора" будет автоматически ресурсы очистки для вас.

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