Несколько функций 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. Из галереи приложений 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, чтобы вручную очистить нативные ресурсы перед выходом.

    Примечание

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