exponenta event banner

Использование глобальных переменных MATLAB в Visual Basic

Свойства класса позволяют объекту сохранять внутреннее состояние между вызовами метода.

Глобальные переменные - это переменные, которые объявлены в продукте 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 и возвращает результаты.

Чтобы построить класс, выполните следующие действия.

  1. Создание проекта компилятора с именем mymatrix с версией 1.0.

  2. Добавление одного класса с именем myfactor к компоненту.

  3. Добавьте в класс три вышеупомянутых файла MATLAB.

  4. Создайте компонент.

Используйте следующую подпрограмму 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

Выполните подпрограмму, которая выполняет следующие действия:

  1. Создание экземпляра myfactor класс

  2. Назначение двойной матрицы свойству A

  3. Вызывает три метода факторизации