Цель примера состоит в том, чтобы показать вам следующее:
Как назначить несколько MATLAB® функция классу компонентов
Как получить доступ к компоненту в приложении C # (MatrixMathApp.cs
) путем создания экземпляров Factor
и использование MWArray
библиотека классов для обработки преобразования данных
Примечание
Для получения информации об этих классах преобразования данных смотрите MATLAB MWArray Class Ссылка, доступный в
папка, где matlabroot
\ help\dotnetbuilder\MWArrayAPImatlabroot
представляет вашу папку установки 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» в качестве второго параметра в командной строке.
Если вы еще не сделали этого, скопируйте файлы для этого примера следующим образом:
Скопируйте следующую папку, которая поставляется с продуктом 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 |
Имя класса | 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».
Создайте MatrixMathApp
приложение с использованием Visual Studio .NET.
The 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, используемые в примере.
The MatrixMath
программа принимает один или два аргумента из командной строки. Первый аргумент преобразуется в целочисленный порядок тестовой матрицы. Если строка sparse
передается как второй аргумент, для хранения тестового массива создается разреженная матрица. Затем вычисляются Холецкий, LU и QR-факторизации, и отображаются результаты.
Основной метод состоит из трех частей:
Первая часть настраивает матрицу входа, создает новый объект фактора и вызывает cholesky
, ludecomp
, и qrdecomp
методы. Эта часть выполняется внутри try
блок. Это делается таким образом, чтобы в случае возникновения исключения во время выполнения соответствующее catch
блок будет выполнен.
Вторая часть является catch
блок. Код печатает сообщение в стандартный выход, чтобы сообщить пользователю о произошедшей ошибке.
Третья часть является finally
блок, чтобы вручную очистить собственные ресурсы перед выходом.
Примечание
Это необязательно, так как сборщик мусора будет автоматически очищать ресурсы для вас.