exponenta event banner

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

Цель

Цель примера - показать следующее:

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

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

    Примечание

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

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

В этом примере создается компонент .NET для выполнения матрицы match. В примере создается программа, которая выполняет факторизации Cholesky, 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 откройте приложение Компилятор библиотеки.

  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);
    ...

    Примечание

    Дополнительные сведения о структуре этой программы см. в разделе Общие сведения о программе MatrixMatrixMatch.

  6. Построить MatrixMathApp с помощью Visual Studio .NET.

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

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

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

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

Функции MATLAB, подлежащие инкапсуляции

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

 cholesky.m

 ludecomp.m

 qrdecomp.m

Общие сведения о программе MatrixMatch

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

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

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

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

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

    Примечание

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