exponenta event banner

MWFlags класса

MWFlags содержит набор флагов форматирования массива и преобразования данных (для получения дополнительной информации о преобразовании типов MATLAB ® и COM Automation см. Правила преобразования данных между .NET и MATLAB). Все компоненты компилятора MATLAB SDK™ COM содержат ссылку на MWFlags объект, который может изменять правила преобразования данных на уровне объекта. Этот класс содержит следующие свойства и метод:

Свойства ArrayFormatFlags как флаги MWArrayFormatFlags

ArrayFormatFlags свойство управляет форматированием массива (как матрицы или массива ячеек) и применением этих правил к вложенным массивам. MWArrayFormatFlags класс является некретируемым классом, доступ к которому осуществляется через MWFlags экземпляр класса. Этот класс содержит шесть свойств:

Свойство InputArrayFormat как mwArrayFormat

Это свойство типа mwArrayFormat управляет форматированием массивов, передаваемых в качестве входных параметров методам класса MATLAB Compiler SDK. Значение по умолчанию: mwArrayFormatMatrix. Варианты поведения, указанные этим флагом, перечислены в следующей таблице.

Правила форматирования массива для входных массивов

СтоимостьПоведение

mwArrayFormatAsIs

Преобразует массивы в соответствии с правилами преобразования по умолчанию, перечисленными в разделе Правила преобразования данных между .NET и MATLAB.

mwArrayFormatCell

Объединяет все массивы в массивы ячеек. Входные скалярные или числовые аргументы преобразуются в массивы ячеек, причем каждая ячейка содержит скалярное значение для соответствующего индекса.

mwArrayFormatMatrix

Объединяет все массивы в матрицы. При обнаружении входного аргумента, являющегося массивом Variants (поведение по умолчанию заключается в преобразовании его в массив ячеек), преобразователь данных преобразует этот массив в матрицу, если каждый Variant является единичным значением, и все элементы являются однородными и имеют числовой тип. Если это преобразование невозможно, создает массив ячеек.

Свойство InputArrayIndFlag как длинное

Это свойство управляет уровнем, на котором должно применяться правило, установленное InputArrayFormat свойство для вложенных массивов (массив Variants передается, и каждый элемент массива является самим массивом). Нет необходимости изменять этот флаг для varargin параметры. Код преобразования данных автоматически увеличивает значение этого флага на 1 для varargin ячейки, таким образом применяя InputArrayFormat флаг для каждой ячейки varargin параметр. Значение по умолчанию: 0.

Выходное значение свойства ArrayFormat как mwArrayFormat

Это свойство типа mwArrayFormat управляет форматированием массивов, передаваемых в качестве выходных параметров методам классов. Значение по умолчанию: mwArrayFormatAsIs. Варианты поведения, указанные этим флагом, перечислены в следующей таблице.

Правила форматирования массивов для массивов вывода

СтоимостьПоведение

mwArrayFormatAsIs

Преобразует массивы в соответствии с правилами преобразования по умолчанию, перечисленными в разделе Правила преобразования данных между .NET и MATLAB.

mwArrayFormatMatrix

Объединяет все массивы в матрицы. При обнаружении аргумента массива выходных ячеек (поведение по умолчанию преобразует его в массив Variants), преобразователь данных преобразует этот массив в Variant содержит простой числовой массив, если каждая ячейка имеет одно значение, а все элементы являются однородными и имеют числовой тип. Если это преобразование невозможно, массив Variants создан.

mwArrayFormatCell

Объединяет все выходные массивы в массивы Variants. Выходные скалярные или числовые аргументы массива преобразуются в массивы Variants, каждый Variant содержит скалярное значение для соответствующего индекса.

Значение OutputArrayIndFlag свойства как длинное

Это свойство аналогично InputArrayIndFalg свойство, поскольку оно управляет уровнем, на котором должно применяться правило, установленное OutputArrayFormat свойство для вложенных массивов. Как и в случае ввода, этот флаг автоматически увеличивается на 1 для varargout параметр. Значение по умолчанию этого флага: 0.

Свойство AutoResityOutput как логическое

Этот флаг применяется только к диапазонам Excel ®. Если конечный результат вызова метода представляет собой диапазон ячеек на листе Excel, а размер и форма выходного массива во время вызова неизвестны, установите этот флаг в значениеTrue дает команду коду преобразования данных изменить размер каждого диапазона Excel, чтобы он соответствовал выходному массиву. Изменение размера применяется относительно верхнего левого угла каждого предоставленного диапазона. Значение по умолчанию для этого флага: False.

Выходное значение TranscedOutput свойства как логическое

Установка этого флага в значение True транспонирует выходные аргументы. Этот флаг полезен при обработке выходного параметра из вызова метода для COM-компонента, где функция MATLAB возвращает выходные данные в виде векторов строк, и требуется поместить данные в столбцы. Значение по умолчанию для этого флага: False.

Свойства DataConversionFlags как флаги MWDataConversionFlags

DataConversionFlags свойство управляет обработкой входных переменных при необходимости принудительного ввода типа. MWDataConversionFlags класс является некретируемым классом, доступ к которому осуществляется через MWFlags экземпляр класса. Этот класс содержит следующие свойства:

Собственность CoerceNumericToType Как mwDataType

Это свойство преобразует все числовые входные аргументы в один конкретный тип MATLAB. Этот флаг полезен, когда переменные, поддерживаемые в коде Visual Basic ®, имеют различные типы, например ,Long, Integerи т.д., и все переменные, передаваемые скомпилированному коду MATLAB, должны быть удвоенными. Значение по умолчанию для этого свойства: mwTypeDefault, в котором используются правила по умолчанию в разделе Правила преобразования данных между .NET и MATLAB.

Свойство DateBias As Long

Это свойство задает смещение даты для выполнения преобразования чисел COM в MATLAB. Значение этого свойства по умолчанию - 693960, представляющее разницу между COM Date числовые даты типа и MATLAB. Этот флаг позволяет использовать существующий код MATLAB, который уже выполняет приращение числовых дат на 693960, без изменений для COM-компонентов. Чтобы обработать даты с таким кодом, установите для этого свойства значение 0.

В этом примере используются флаги преобразования данных для изменения формы выходных данных метода, скомпилированного из функции MATLAB, которая создает выходной вектор неизвестной длины.

function p = myprimes(n)
if length(n)~=1, error('N must be a scalar'); end
if n < 2, p = zeros(1,0); return, end
p = 1:2:n;
q = length(p);
p(1) = 2;
for k = 3:2:sqrt(n)
    if p((k+1)/2)
        p(((k*k+1)/2):k:q) = 0;
    end
end
p = (p(p>0));

Эта функция создает вектор строки всех простых чисел от 0 до n. Предположим, что эта функция включена в класс с именем myclass который включен в компонент с именем mycomponent с версией 1.0. Подпрограмма принимает диапазон Excel и Double в качестве входных данных и помещает сгенерированные простые числа в заданный диапазон. Функция MATLAB создает вектор строки, несмотря на необходимость вывода в формате столбца. Также создается неизвестное количество выходов, и не требуется усекать какие-либо выходы. Для решения этих проблем установите TransposeOutput флаг и AutoResizeOutput флаг для True. В предыдущих примерах Visual Basic CreateObject создает необходимые классы. В этом примере используется явное объявление типа для aClass переменная. Как и в предыдущих примерах, эта функция предполагает, что MWInitApplication ранее был вызван.

Sub GenPrimes(R As Range, n As Double)
    Dim aClass As mycomponent.myclass
    
    On Error GoTo Handle_Error
    Set aClass = New mycomponent.myclass
    aClass.MWFlags.ArrayFormatFlags.AutoResizeOutput = True
    aClass.MWFlags.ArrayFormatFlags.TransposeOutput = True
    Call aClass.myprimes(1, R, n)
    Exit Sub
Handle_Error:
    MsgBox (Err.Description)
End Sub

Свойство InputDateFormat как mwDateFormat

Это свойство преобразует даты, переданные в качестве входных параметров, в вызовы метода для классов SDK компилятора MATLAB. Значение по умолчанию: mwDateFormatNumeric. Поведение, указанное этим флагом, показано в следующей таблице.

Правила преобразования для дат ввода

СтоимостьПоведение

mwDateFormatNumeric

Преобразуйте даты в числовые значения, как указано в правиле «Правила преобразования данных между .NET и MATLAB».

mwDateFormatString

Преобразовать даты ввода в строки.

Свойство OutputAsDate как логическое значение

Это свойство обрабатывает выходной аргумент как дату. По умолчанию числовые даты, являющиеся выходными параметрами скомпилированных функций MATLAB, передаются как Doubles, которые должны быть уменьшены смещением даты COM (693960), а также принуждены к датам COM. Установить этот флаг в значение True преобразование всех выходных значений типа Double.

Замена отсутствует как данные mwRepleyMissingData

Это свойство является перечислением и может иметь два возможных значения: mwReplaceNaN и mwReplaceZero.

Для обработки пустых ячеек, на которые ссылаются входные параметры, как нулей установите значение mwReplaceZero. Обработка пустых ячеек, на которые ссылаются входные параметры NaNs (Не число), задайте значение mwReplaceNaN.

По умолчанию используется значение mwReplaceZero.

Субклон (ppFlags As MWFlags

)

Создание копии MWFlags объект.

Параметры

АргументНапечататьОписание

ppFlags

MWFlags

Ссылка на неинициализированный MWFlags объект, получающий копию

Возвращаемое значение

Ничего

Замечания

Клон выделяет новый MWFlags и создает глубокую копию содержимого объекта. Вызовите эту функцию, если требуется отдельный объект вместо общей копии существующей ссылки на объект.