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

Цель

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

  • Как назначить несколько MATLAB® функция классу компонентов

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

    Примечание

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

  • Как создать и запустить MatrixMathApp приложение, с использованием Visual Studio® Среда разработки .NET

Этот пример строит .NET компонент, чтобы выполнить math.Пример создает программу, которая выполняет Холецкий, 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 ]

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

Процедура

  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
    Имя класса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. Создайте MatrixMathApp приложение с использованием Visual Studio .NET.

    1. The 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

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

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

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

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

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

    Примечание

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