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

    Примечание

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

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