The MWFlags класс содержит набор флагов форматирования массивов и преобразования данных (См. Правила преобразования данных между .NET и MATLAB для получения дополнительной информации о преобразовании между MATLAB® и COM-типов автоматизации.) Все компоненты MATLAB Compiler SDK™ COM содержат ссылку на MWFlags объект, который может изменять правила преобразования данных на уровне объекта. Этот класс содержит следующие свойства и метод:
The ArrayFormatFlags свойство управляет форматированием массива (в виде матрицы или массива ячеек) и применением этих правил к вложенным массивам. The MWArrayFormatFlags класс является неподготовленным классом, доступ к которому осуществляется через MWFlags образец класса. Этот класс содержит шесть свойств:
Это свойство типа mwArrayFormat управляет форматированием массивов, переданных в качестве входных параметров методам класса MATLAB Compiler SDK. Значение по умолчанию mwArrayFormatMatrix. Поведение, обозначенное этим флагом, перечислено в следующей таблице.
Правила форматирования массивов для входных массивов
| Значение | Поведение |
|---|---|
|
|
Преобразует массивы в соответствии с правилами преобразования по умолчанию, перечисленными в Правилах преобразования данных между .NET и MATLAB. |
|
|
Коерцирует все массивы в массивы ячеек. Входы скаляра или числового массива аргументов преобразуются в массивы ячеек с каждой камерой, содержащим скалярное значение для соответствующего индекса. |
|
|
Коэрцирует все массивы в матрицы. Когда встречается входной параметр, которая является массивом |
Это свойство управляет уровнем, на котором следует применять правило, заданное InputArrayFormat свойство для вложенных массивов (массив Variants передается, и каждый элемент массива сам является массивом). Нет необходимости изменять этот флаг для varargin параметры. Код преобразования данных автоматически увеличивает значение этого флага на 1 для varargin камеры, таким образом применяя InputArrayFormat флаг каждой камере varargin параметр. Значение по умолчанию 0.
Это свойство типа mwArrayFormat управляет форматированием массивов, переданных в качестве выходных параметров в методы класса. Значение по умолчанию mwArrayFormatAsIs. Поведение, обозначенное этим флагом, перечислено в следующей таблице.
Правила форматирования массивов для выходных массивов
| Значение | Поведение |
|---|---|
|
|
Преобразует массивы в соответствии с правилами преобразования по умолчанию, перечисленными в Правилах преобразования данных между .NET и MATLAB. |
|
|
Коэрцирует все массивы в матрицы. Когда встречается аргумент массива выходных ячеек (поведение по умолчанию преобразует его в массив |
|
|
Коверсирует все выходные массивы в массивы |
Это свойство подобно InputArrayIndFalg свойство, так как оно управляет уровнем, на котором можно применять правило, заданное OutputArrayFormat свойство для вложенных массивов. Как и во входном случае, этот флаг автоматически увеличивается на 1 для varargout параметр. Значение по умолчанию этого флага 0.
Этот флаг применяется к Excel® области значений только. Когда целевой выход от вызова метода является областью значений камер в листе Excel, и размер и форма выходного массива не известны во время вызова, установка этого флага равной True инструктирует код преобразования данных для изменения размера каждой области значений Excel в соответствии с выходом массивом. Изменение размера применяется относительно верхнего левого угла каждого поставляемой области значений. Значение по умолчанию для этого флага False.
Установка этого флага на True транспонирует выходные аргументы. Этот флаг полезен при обработке выходного параметра из вызова метода на COM- компонента, где функция MATLAB возвратов выходов как векторы-строки, и вы хотите поместить данные в столбцы. Значение по умолчанию для этого флага False.
The DataConversionFlags свойство управляет обработкой входных переменных при необходимости принуждения типа. The MWDataConversionFlags класс является неподготовленным классом, доступ к которому осуществляется через MWFlags образец класса. Этот класс содержит следующие свойства:
Это свойство преобразует все числовые входные параметры в один определенный тип MATLAB. Этот флаг полезен, когда переменные поддерживаются в Visual Basic® код разных типов, например Long, Integer, и т.д., и все переменные, переданные в скомпилированный код MATLAB, должны быть двойными. Значение по умолчанию для этого свойства mwTypeDefault, который использует правила по умолчанию в Правилах преобразования данных между .NET и MATLAB.
Это свойство устанавливает смещение даты для выполнения числовых преобразований COM в MATLAB. Значение по умолчанию этого свойства 693960, представляющее различие между COM- Date введите и числовые даты MATLAB. Этот флаг позволяет использовать существующий код MATLAB, который уже выполняет шаг числовых дат на 693960, без изменений с компонентами. Чтобы обработать даты с таким кодом, установите это свойство на 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
Это свойство преобразует даты, переданные в качестве входных параметров, в вызовы методов на классах MATLAB Compiler SDK. Значение по умолчанию mwDateFormatNumeric. Поведение, обозначенное этим флагом, показано в следующей таблице.
Правила преобразования для входных дат
| Значение | Поведение |
|---|---|
|
|
Преобразуйте даты в числовые значения, как указано правилом, перечисленным в Правилах преобразования данных между .NET и MATLAB. |
|
|
Преобразуйте входные даты в строки. |
Это свойство обрабатывает выходной аргумент как дату. По умолчанию числовые даты, которые являются выходными параметрами из скомпилированных функций MATLAB, передаются как Doubles, которые должны быть уменьшены смещением даты COM (693960), а также принуждены к датам COM. Установите этот флаг равным True для преобразования всех выходных значений типа Double.
Это свойство является перечислением и может иметь два возможных значения: mwReplaceNaN и mwReplaceZero.
Чтобы считать пустые камеры, на которые ссылаются входные параметры, нулями, задайте значение mwReplaceZero. Чтобы обработать пустые камеры, на которые ссылаются входные параметры, как NaNs (Не число), установите значение mwReplaceNaN.
По умолчанию значение mwReplaceZero.
Создание копии MWFlags объект.
| Аргумент | Напечатать | Описание |
|---|---|---|
|
|
|
Ссылка на неинициализированный |
Ничего
Клон выделяет новую MWFlags и создает глубокую копию содержимого объекта. Вызовите эту функцию, когда требуется отдельный объект вместо общей копии существующей ссылки на объект.