MWUtil содержит набор статических служебных методов, используемых при обработке массива и инициализации приложения. Этот класс реализован внутренне как одиночный (только один глобальный экземпляр этого класса на экземпляр Microsoft ® Excel ®). Наиболее эффективно объявить одну переменную этого типа в глобальной области действия в каждом использующем ее модуле. Методы MWUtil являются:
Прототипы функций используют синтаксис Visual Basic ®.
Инициализирует библиотеку с текущим экземпляром Microsoft Excel.
| Аргумент | Напечатать | Описание |
|---|---|---|
|
|
|
Допустимая ссылка на текущее приложение Excel |
Ничего.
Эта функция должна вызываться один раз для каждого сеанса Excel, в котором используются COM-компоненты, созданные MATLAB ® Compiler™. Ошибка возникает, если выполняется вызов метода для класса-члена любого компонента MATLAB Compiler SDK™ COM, и библиотека не инициализирована.
Этот образец Visual Basic инициализирует MWComUtil с текущим экземпляром Excel. Глобальная переменная типа Object названный MCLUtil содержит экземпляр MWUtil класс и другая глобальная переменная типа Boolean названный bModuleInitialized сохраняет статус процесса инициализации. Частная подпрограмма InitModule() создает экземпляр MWComUtil класс и вызывает MWInitApplication метод с аргументом Application. После успешного выполнения этой функции все последующие вызовы завершаются без повторного создания объекта.
Dim MCLUtil As Object
Dim bModuleInitialized As Boolean
Private Sub InitModule()
If Not bModuleInitialized Then
On Error GoTo Handle_Error
If MCLUtil Is Nothing Then
Set MCLUtil = CreateObject("MWComUtil.MWUtil")
End If
Call MCLUtil.MWInitApplication(Application)
bModuleInitialized = True
Exit Sub
Handle_Error:
bModuleInitialized = False
End If
End Sub
Примечание
При одновременной разработке нескольких версий MATLAB и MWComUtil.dll, например, используя следующий синтаксис:
Set MCLUtil = CreateObject("MWComUtil.MWUtil")MWUtil специфичный для версии модуля, например:Set MCLUtil = CreateObject("MWComUtil.MWUtilx.x")x.x - конкретный номер версии.Запустите среду выполнения MATLAB с параметрами среды выполнения MATLAB. Аналогично mclInitializeApplication (MATLAB Compiler SDK).
| Аргумент | Напечатать | Описание |
|---|---|---|
|
|
|
Допустимая ссылка только при вызове из приложения Excel Не COM-клиенты Excel проходят |
Ничего.
Вызовите эту функцию для передачи параметров среды выполнения MATLAB (nojvm, logfileи т.д.). Вызовите эту функцию один раз для каждого процесса.
Этот образец Visual Basic инициализирует MWComUtil с текущим экземпляром Excel. Глобальная переменная типа Object названный MCLUtil содержит экземпляр MWUtil класс и другая глобальная переменная типа Boolean названный bModuleInitialized сохраняет статус процесса инициализации. Частная подпрограмма InitModule() создает экземпляр MWComUtil класс и вызывает MWInitApplicationWithMCROptions метод с аргументом Application и строковый массив, содержащий опции. После успешного выполнения этой функции все последующие вызовы завершаются без повторного создания объекта. После успешного выполнения этой функции среда выполнения MATLAB запускается без JVM™ и файла журнала logfile.txt.
Dim MCLUtil As Object
Dim bModuleInitialized As Boolean
Private Sub InitModule()
If Not bModuleInitialized Then
On Error GoTo Handle_Error
If MCLUtil Is Nothing Then
Set MCLUtil = CreateObject("MWComUtil.MWUtil")
End If
Dim mcrOptions(1 To 3) as String
mcrOptions(1) = "-nojvm"
mcrOptions(2) = "-logfile"
mcrOptions(3) = "logfile.txt"
Call MCLUtil.MWInitApplicationWithMCROptions(Application, mcrOptions)
bModuleInitialized = True
Exit Sub
Handle_Error:
bModuleInitialized = False
End If
End Sub
Примечание
Если вы не используете Excel, передайте Nothing вместо Application кому MWInitApplicationWithMCROptions.
Прибыль true при запуске среды выполнения MATLAB с JVM; в противном случае возвращает false.
Ничего.
Boolean
Прибыль true если инициализирована среда выполнения MATLAB; в противном случае возвращает false
Ничего.
Boolean
Упаковывает список переменной длины Variant аргументы в один Variant массив. Эта функция обычно используется для создания varargin ячейка из списка отдельных входов. Каждый вход в списке добавляется в массив, только если он не пуст или отсутствует. (В Visual Basic отсутствующий параметр обозначается Variant тип vbError со значением &H80020004.)
| Аргумент | Напечатать | Описание |
|---|---|---|
|
|
|
Получает результирующий массив |
[Var0], [Var1], ... |
|
Необязательный список |
Ничего.
Эта функция всегда освобождает содержимое pVarArg перед обработкой списка.
В этом примере используется MWPack в функции формулы для создания varargin ячейка для передачи в качестве входного параметра методу, скомпилированному из функции MATLAB с сигнатурой
function y = mysum(varargin)
y = sum([varargin{:}]);
Функция возвращает сумму элементов в varargin. Предположим, что эта функция является методом класса с именем myclass который включен в компонент с именем mycomponent с версией 1.0. Функция Visual Basic допускает до 10 входов и возвращает результат y. При возникновении ошибки функция возвращает сообщение об ошибке. Эта функция предполагает, что MWInitApplication ранее был вызван.
Function mysum(Optional V0 As Variant, _
Optional V1 As Variant, _
Optional V2 As Variant, _
Optional V3 As Variant, _
Optional V4 As Variant, _
Optional V5 As Variant, _
Optional V6 As Variant, _
Optional V7 As Variant, _
Optional V8 As Variant, _
Optional V9 As Variant) As Variant
Dim y As Variant
Dim varargin As Variant
Dim aClass As Object
Dim aUtil As Object
On Error Goto Handle_Error
Set aClass = CreateObject("mycomponent.myclass.1_0")
Set aUtil = CreateObject("MWComUtil.MWUtil")
Call aUtil.MWPack(varargin,V0,V1,V2,V3,V4,V5,V6,V7,V8,V9)
Call aClass.mysum(1, y, varargin)
mysum = y
Exit Function
Handle_Error:
mysum = Err.Description
End Function
Распаковка массива Variants в индивидуальный Variant аргументы. Эта функция обеспечивает обратную функциональность MWPack и обычно используется для обработки varargout ячейка в индивидуальную Variants.
| Аргумент | Напечатать | Описание |
|---|---|---|
|
|
|
Входной массив |
|
|
|
Необязательный начальный индекс (на основе нуля) в массиве для начала обработки. По умолчанию = |
|
|
|
Необязательный флаг автоматического изменения размера. Если этот флаг |
|
|
|
Необязательный список |
Ничего.
Эта функция может обрабатывать Variant массив в одном вызове или через несколько вызовов с использованием nStartAt параметр.
В этом примере используется MWUnpack для обработки varargout в несколько диапазонов Excel при автоматическом изменении размера каждого диапазона. varargout параметр предоставляется из метода, скомпилированного из функции MATLAB.
function varargout = randvectors
for i=1:nargout
varargout{i} = rand(i,1);
end
Эта функция создает последовательность nargout случайные векторы столбцов с длиной i-го вектора, равной i. Предположим, что эта функция включена в класс с именем myclass который включен в компонент с именем mycomponent с версией 1.0. Подпрограмма Visual Basic не принимает аргументов и помещает результаты в столбцы Excel, начиная с A1, B1, C1 и D1. При возникновении ошибки в окне сообщения отображается текст ошибки. Эта функция предполагает, что MWInitApplication ранее был вызван.
Sub GenVectors()
Dim aClass As Object
Dim aUtil As Object
Dim v As Variant
Dim R1 As Range
Dim R2 As Range
Dim R3 As Range
Dim R4 As Range
On Error GoTo Handle_Error
Set aClass = CreateObject("mycomponent.myclass.1_0")
Set aUtil = CreateObject("MWComUtil.MWUtil")
Set R1 = Range("A1")
Set R2 = Range("B1")
Set R3 = Range("C1")
Set R4 = Range("D1")
Call aClass.randvectors(4, v)
Call aUtil.MWUnpack(v,0,True,R1,R2,R3,R4)
Exit Sub
Handle_Error:
MsgBox (Err.Description)
End Sub
Преобразует даты вывода из MATLAB в Variant даты.
| Аргумент | Напечатать | Описание |
|---|---|---|
|
|
|
|
Ничего.
MATLAB обрабатывает даты как числа с плавающей запятой двойной точности с 0,0, что соответствует 0/0/00 00:00:00. По умолчанию числовые даты, являющиеся выходными параметрами скомпилированных функций MATLAB, передаются как Doubles, которые должны быть уменьшены смещением даты COM, а также принуждены к датам COM. MWDate2VariantDate способ выполняет это преобразование и дополнительно преобразует даты в виде символьного вектора в типы дат COM.
В этом примере используется MWDate2VariantDate для обработки числовых дат, возвращенных методом, скомпилированным из следующей функции MATLAB.
function x = getdates(n, inc)
y = now;
for i=1:n
x(i,1) = y + (i-1)*inc;
end
Эта функция создает n- вектор столбца длины числовых значений, представляющих даты, начинающиеся с текущей даты и времени, с каждым элементом, увеличенным на inc дней. Предположим, что эта функция включена в класс с именем myclass который включен в компонент с именем mycomponent с версией 1.0. Подпрограмма принимает диапазон Excel и Double в качестве входных данных и помещает сгенерированные даты в предоставленный диапазон. При возникновении ошибки в окне сообщения отображается текст ошибки. Эта функция предполагает, что MWInitApplication ранее был вызван.
Sub GenDates(R As Range, inc As Double)
Dim aClass As Object
Dim aUtil As Object
On Error GoTo Handle_Error
Set aClass = CreateObject("mycomponent.myclass.1_0")
Set aUtil = CreateObject("MWComUtil.MWUtil")
Call aClass.getdates(1, R, R.Rows.Count, inc)
Call aUtil.MWDate2VariantDate(R)
Exit Sub
Handle_Error:
MsgBox (Err.Description)
End Sub