Цель примера состоит в том, чтобы показать вам следующее:
Как присвоить больше чем одну функцию MATLAB® классу компонента
Как получить доступ к компоненту в приложении C# (MatrixMathApp.cs
) путем инстанцирования Factor
и использование MWArray
библиотека классов, чтобы обработать преобразование данных
Примечание
Для получения информации об этих классах преобразования данных см. Справочник по библиотеке классов MWArray MATLAB, доступный в
папка, где matlabroot
\help\dotnetbuilder\MWArrayAPImatlabroot
представляет вашу папку установки 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 ]
Вы предоставляете размер матрицы на командной строке, и программа создает матрицу и выполняет эти три факторизации. Исходная матрица и результаты распечатаны к стандартному выводу. Можно опционально выполнить вычисления с помощью разреженной матрицы путем определения строки, "разреженной" как второй параметр на командной строке.
Если вы уже не сделали так, скопируйте файлы для этого примера можно следующим образом:
Скопируйте следующую папку, которая поставляется с продуктом MATLAB к вашей папке работы:
matlabroot\toolbox\dotnetbuilder\Examples\VSVersion\NET\MatrixMathExample
В командной строке MATLAB, cd
к новому MatrixMathExample
подпапка в вашей папке работы.
Запишите функции MATLAB, когда вы были бы любая функция MATLAB.
Код для cholesky
, ludecomp
, и qrdecomp
функции уже находятся в вашей папке работы в MatrixMathExample\MatrixMathComp\
.
Из галереи Apps MATLAB откройте приложение Library Compiler.
Создайте компонент.NET. Смотрите, что инструкции в Генерируют блок.NET и Создают Приложение.NET для получения дополнительной информации. Используйте следующую информацию:
Название проекта | MatrixMathComp |
ClassName | 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); ...
Примечание
Смотрите Понимание Программы MatrixMath для получения дополнительной информации о структуре этой программы.
Создайте the MatrixMathApp
приложение с помощью Visual Studio.NET.
MatrixMathCSApp
папка содержит файл проекта Visual Studio.NET для этого примера. Откройте проект в Visual Studio.NET путем двойного клика по MatrixMathCSApp.csproj
в Проводнике Windows®. Можно также открыть его с рабочего стола путем щелчка правой кнопкой по MatrixMathCSApp.csproj> Open Outside MATLAB.
Добавьте ссылку на MWArray
компонент, который является
Смотрите Поддерживаемые Версии Microsoft.NET Framework для списка поддерживаемых версий среды.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
передается в качестве второго аргумента, разреженная матрица создается, чтобы содержать тестовый массив. Холесский, LU и QR-факторизации затем вычисляются, и результаты отображены.
Основной метод имеет три части:
Первая часть настраивает входную матрицу, создает новый факторный объект и вызывает cholesky
, ludecomp
, и qrdecomp
методы. Эта часть выполняется в try
блок. Это сделано так, чтобы, если исключение происходит во время выполнения, соответствующего catch
блок будет выполняться.
Второй частью является catch
блок. Код распечатывает сообщение к стандартному выводу, чтобы сообщить пользователю об ошибке, которая произошла.
Третьей частью является finally
блокируйтесь, чтобы вручную очистить нативные ресурсы перед выходом.
Примечание
Это дополнительное как сборщик "мусора" будет автоматически ресурсы очистки для вас.