Свойства класса позволяют объекту сохранить внутреннее состояние между вызовами метода.
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 в класс.
Создайте компонент.
Используйте следующую Визуальную стандартную подпрограмму 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
Вызывает три метода факторизации