Свойства класса позволяют объекту сохранять внутреннее состояние между вызовами методов.
Global variables переменные, которые объявлены в MATLAB® продукт с global
ключевое слово. MATLAB Compiler SDK™ автоматически преобразует все глобальные переменные, общие для файлов MATLAB, которые составляют класс, в свойства этого класса.
Свойства применяются, когда у вас есть большой массив, содержащий значения, которые не часто изменяются, но часто управляются. В таких случаях установка массива как свойства сохраняет накладные расходы, необходимые для передачи его в метод каждый раз, когда он вызывается.
В следующем примере показано, как использовать свойство класса в классе факторизации матрицы. Пример разрабатывает класс, который выполняет Холецкий, LU и QR-факторизации на той же матрице. Он хранит матрицу входа как свойство класса, так что она не передается в стандартные программы факторизации.
Рассмотрим эти три файла MATLAB.
Cholesky.m
function [L] = Cholesky() global A; if (isempty(A)) L = []; return; end L = chol(A);
LUDecomp.m
function [L,U] = LUDecomp() global A; if (isempty(A)) L = []; U = []; return; end [L,U] = lu(A);
QRDecomp.m
function [Q,R] = QRDecomp() global A; if (isempty(A)) Q = []; R = []; return; end [Q,R] = qr(A);
Эти три файла имеют общую глобальную переменную A
. Каждая функция выполняет матричную факторизацию на A
и возвращает результаты.
Чтобы создать класс:
Создайте проект компилятора с именем mymatrix
с версией 1.0.
Добавьте один класс с именем myfactor
в компонент.
Добавьте указанные выше три файла MATLAB к классу.
Создайте компонент.
Используйте следующий Visual Basic® стандартная подпрограмма для тестирования myfactor
класс:
Sub TestFactor() Dim x(1 To 2, 1 To 2) As Double Dim C As Variant, L As Variant, U As Variant, _ Q As Variant, R As Variant Dim factor As myfactor On Error GoTo Handle_Error Set factor = New myfactor x(1, 1) = 2# x(1, 2) = -1# x(2, 1) = -1# x(2, 2) = 2# factor.A = x Call factor.cholesky(1, C) Call factor.ludecomp(2, L, U) Call factor.qrdecomp(2, Q, R) Exit Sub Handle_Error: MsgBox (Err.Description) End Sub
Запустите стандартную подпрограмму, которая делает следующее:
Создание образца myfactor
класс
Присваивает свойству двойную матрицу A
Вызывает три метода факторизации