Цель примера - показать следующее:
Назначение нескольких функций MATLAB ® классу компонентов
Доступ к компоненту в приложении C # (MatrixMathApp.cs) путем создания экземпляра Factor и с использованием MWArray библиотека классов для обработки преобразования данных
Примечание
Для получения информации об этих классах преобразования данных см. Справочник по библиотеке классов MATLAB MWArray, доступный в папка, где matlabroot\help\dotnetbuilder\MWArrayAPImatlabroot представляет папку установки 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 ]
Размер матрицы указывается в командной строке, и программа создает матрицу и выполняет три факторизации. Исходная матрица и результаты печатаются для стандартного вывода. При необходимости можно выполнить вычисления с использованием разреженной матрицы, указав строку «разреженный» в качестве второго параметра в командной строке.
Если это еще не сделано, скопируйте файлы для этого примера следующим образом:
Скопируйте следующую папку, поставляемую с продуктом MATLAB, в рабочую папку:
matlabroot\toolbox\dotnetbuilder\Examples\VSVersion\NET\MatrixMathExample
В командной строке MATLAB cd к новому MatrixMathExample вложенной папки в рабочей папке.
Напишите функции MATLAB так же, как и любую функцию MATLAB.
Код для cholesky, ludecomp, и qrdecomp функции уже находятся в вашей рабочей папке в MatrixMathExample\MatrixMathComp\.
В галерее приложений MATLAB откройте приложение Компилятор библиотеки.
Создайте компонент .NET. Дополнительные сведения см. в разделах Создание сборки .NET и Создание приложения .NET. Используйте следующую информацию:
| Название проекта | MatrixMathComp |
| Имя класса | Factor |
| Файлы для компиляции | cholesky ludecomp qrdecomp |
Запись исходного кода для приложения, получающего доступ к компоненту.
Пример приложения для этого примера находится в MatrixMathExample\MatrixMathCSApp\MatrixMathApp.cs.
Список программ показан здесь.
Заявление
Factor factor= new Factor();
создает экземпляр класса Factor.
Следующие операторы вызывают методы, инкапсулирующие функции MATLAB:
argOut= factor.cholesky((MWArray)matrix); ... argsOut= factor.ludecomp(2, matrix); ... argsOut= factor.qrdecomp(2, matrix); ...
Примечание
Дополнительные сведения о структуре этой программы см. в разделе Общие сведения о программе MatrixMatrixMatch.
Построить MatrixMathApp с помощью Visual Studio .NET.
MatrixMathCSApp содержит файл проекта Visual Studio .NET для этого примера. Откройте проект в Visual Studio .NET, дважды щелкнув MatrixMathCSApp.csproj в Проводнике Windows ®. Его также можно открыть с рабочего стола, щелкнув правой кнопкой мыши MatrixMathCSApp.csproj > Открыть вне MATLAB.
Добавление ссылки на MWArray компонент, который является Список поддерживаемых версий платформы см. в разделе Поддерживаемые версии платформы Microsoft .NET.matlabroot\toolbox\dotnetbuilder\bin\architecture\framework_version
\mwarray.dll.
При необходимости добавьте (или исправьте расположение) ссылку на MatrixMathComp компонент, который был построен на предыдущем шаге. (Компонент, MatrixMathComp.dll, находится в \MatrixMathExample\MatrixMathComp\x86\V2.0\Debug\distrib подпапка рабочей области.)
Создайте и запустите приложение в Visual Studio .NET.
Следующий код определяет функции MATLAB, используемые в примере.
MatrixMath программа берет один или два аргумента из командной строки. Первый аргумент преобразуется в целочисленный порядок тестовой матрицы. Если строка sparse передается в качестве второго аргумента, создается разреженная матрица, содержащая тестовый массив. Затем вычисляются факторизации Cholesky, LU и QR и отображаются результаты.
Основной метод состоит из трех частей:
Первая деталь устанавливает матрицу ввода, создает новый объект коэффициента и вызывает cholesky, ludecomp, и qrdecomp методы. Эта часть выполняется внутри try блок. Это делается для того, чтобы в случае возникновения особой ситуации во время выполнения catch блок будет выполнен.
Вторая часть - catch блок. Код выводит сообщение на стандартный вывод, информирующее пользователя о возникшей ошибке.
Третья часть - finally для ручной очистки собственных ресурсов перед выходом.
Примечание
Эта опция в качестве сборщика мусора автоматически очищает ресурсы для вас.