Свойства класса позволяют объекту сохранять внутреннее состояние между вызовами метода.
Глобальные переменные - это переменные, которые объявлены в продукте MATLAB ® с помощью global ключевое слово. Компилятор MATLAB SDK™ автоматически преобразует все глобальные переменные, общие для файлов MATLAB, составляющих класс, в свойства этого класса.
Свойства полезны при наличии большого массива, содержащего значения, которые не часто изменяются, но часто обрабатываются. В таких случаях установка массива в качестве свойства экономит издержки, необходимые для передачи его методу при каждом вызове.
В следующем примере показано, как использовать свойство класса в классе факторизации матрицы. В примере разрабатывается класс, который выполняет факторизации Cholesky, 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
Вызывает три метода факторизации