The MWFlags
класс содержит набор флагов форматирования массивов и преобразования данных (См. Правила преобразования данных между .NET и MATLAB для получения дополнительной информации о преобразовании между MATLAB® и COM-типов автоматизации.) Все компоненты MATLAB Compiler SDK™ COM содержат ссылку на MWFlags
объект, который может изменять правила преобразования данных на уровне объекта. Этот класс содержит следующие свойства и метод:
The ArrayFormatFlags
свойство управляет форматированием массива (в виде матрицы или массива ячеек) и применением этих правил к вложенным массивам. The MWArrayFormatFlags
класс является неподготовленным классом, доступ к которому осуществляется через MWFlags
образец класса. Этот класс содержит шесть свойств:
Это свойство типа mwArrayFormat
управляет форматированием массивов, переданных в качестве входных параметров методам класса MATLAB Compiler SDK. Значение по умолчанию mwArrayFormatMatrix
. Поведение, обозначенное этим флагом, перечислено в следующей таблице.
Правила форматирования массивов для входных массивов
Значение | Поведение |
---|---|
|
Преобразует массивы в соответствии с правилами преобразования по умолчанию, перечисленными в Правилах преобразования данных между .NET и MATLAB. |
|
Коерцирует все массивы в массивы ячеек. Входы скаляра или числового массива аргументов преобразуются в массивы ячеек с каждой камерой, содержащим скалярное значение для соответствующего индекса. |
|
Коэрцирует все массивы в матрицы. Когда встречается входной параметр, которая является массивом |
Это свойство управляет уровнем, на котором следует применять правило, заданное InputArrayFormat
свойство для вложенных массивов (массив Variant
s передается, и каждый элемент массива сам является массивом). Нет необходимости изменять этот флаг для 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, передаются как Double
s, которые должны быть уменьшены смещением даты COM (693960), а также принуждены к датам COM. Установите этот флаг равным True
для преобразования всех выходных значений типа Double
.
Это свойство является перечислением и может иметь два возможных значения: mwReplaceNaN
и mwReplaceZero
.
Чтобы считать пустые камеры, на которые ссылаются входные параметры, нулями, задайте значение mwReplaceZero
. Чтобы обработать пустые камеры, на которые ссылаются входные параметры, как NaN
s (Не число), установите значение mwReplaceNaN
.
По умолчанию значение mwReplaceZero
.
Создание копии MWFlags
объект.
Аргумент | Напечатать | Описание |
---|---|---|
|
|
Ссылка на неинициализированный |
Ничего
Клон выделяет новую MWFlags
и создает глубокую копию содержимого объекта. Вызовите эту функцию, когда требуется отдельный объект вместо общей копии существующей ссылки на объект.