クラス MWFlags
MWFlags
クラスには、一連の配列形式フラグとデータ変換フラグが含まれています。MATLAB® と COM オートメーション間の型変換の詳細については、.NET と MATLAB の間のデータ変換のルール (MATLAB Compiler SDK)を参照してください。MATLAB Compiler SDK™ のすべての COM コンポーネントに、オブジェクト レベルでデータ変換ルールを変更できる MWFlags
オブジェクトへの参照が含まれています。このクラスには、以下のプロパティとメソッドが含まれています。
Property ArrayFormatFlags As MWArrayFormatFlags
ArrayFormatFlags
プロパティは配列形式 (行列または cell 配列) および入れ子配列へのこれらのルールの適用を制御します。MWArrayFormatFlags
クラスは MWFlags
クラス インスタンスを介してアクセスされる作成不可能なクラスです。このクラスには以下の 6 つのプロパティが含まれています。
Property InputArrayFormat As mwArrayFormat
この mwArrayFormat
型のプロパティは、MATLAB Compiler SDK のクラス メソッドに入力パラメーターとして渡される配列の形式を制御します。既定値は mwArrayFormatMatrix
です。このフラグにより示される動作は次の表にまとめられています。
入力配列の配列形式化ルール
値 | 動作 |
---|---|
| .NET と MATLAB の間のデータ変換のルール (MATLAB Compiler SDK)にリストされている既定の変換ルールに従って配列を変換します。 |
| すべての配列を強制的に cell 配列に変換します。入力スカラーまたは数値配列引数は、各セルがそれぞれのインデックスのスカラー値を含む cell 配列に変換されます。 |
| すべての配列を強制的に行列に変換します。 |
Property InputArrayIndFlag As Long
このプロパティは、入れ子配列 (Variant
の配列が渡され、配列の各要素は配列自身) に対して InputArrayFormat
プロパティにより設定されたルールを適用するレベルを制御します。varargin
パラメーターのためにこのフラグを変更する必要はありません。データ変換コードは varargin
セルに対するこのフラグの値を自動的に 1 ずつインクリメントするため、InputArrayFormat
フラグが varargin
パラメーターの各セルに適用されます。既定値は 0
です。
Property OutputArrayFormat As mwArrayFormat
mwArrayFormat
型のこのプロパティは、クラス メソッドに出力パラメーターとして渡される複数の配列の形式を制御します。既定値は mwArrayFormatAsIs
です。このフラグにより示される動作は次の表にまとめられています。
出力配列の配列形式化ルール
値 | 動作 |
---|---|
| .NET と MATLAB の間のデータ変換のルール (MATLAB Compiler SDK)にリストされている既定の変換ルールに従って配列を変換します。 |
| すべての配列を強制的に行列に変換します。出力 cell 配列の引数が検出されると、既定の動作では |
| すべての出力配列を |
Property OutputArrayIndFlag As Long
このプロパティは InputArrayIndFalg
プロパティと似ており、入れ子配列に対して OutputArrayFormat
プロパティにより設定されたルールを適用するレベルを制御します。入力の場合と同様に、このフラグは varargout
パラメーターに対して自動的に 1 ずつインクリメントされます。このフラグの既定値は 0
です。
Property AutoResizeOutput As Boolean
このフラグは Excel® の範囲にのみ使用できます。メソッド呼び出しからのターゲット出力が Excel ワークシートのセル範囲で、出力配列のサイズと形状が呼び出しの時点では不明な場合、このフラグを True
に設定すると、データ変換コードは各 Excel 範囲を出力配列に合うようにサイズ変更します。サイズ変更は指定された各範囲の左上隅を基準にして適用されます。このフラグの既定値は False
です。
Property TransposeOutput As Boolean
このフラグを True
に設定すると、出力引数が転置されます。このフラグは、COM コンポーネントでメソッド呼び出しからの出力パラメーターを処理する際、MATLAB 関数が行ベクトルとして返す出力のデータを列に配置する場合に役に立ちます。このフラグの既定値は False
です。
Property DataConversionFlags As MWDataConversionFlags
DataConversionFlags
プロパティは型強制が必要な場合の入力変数の処理方法を制御します。MWDataConversionFlags
クラスは MWFlags
クラス インスタンスを介してアクセスされる作成不可能なクラスです。このクラスには以下のプロパティが含まれています。
Property CoerceNumericToType As mwDataType
このプロパティはすべての数値入力引数を特定の 1 つの MATLAB 型に変換します。このフラグは Visual Basic® コード内で保持されている変数の型が、たとえば Long
、Integer
など異なり、コンパイルされる MATLAB コードに渡されるすべての変数が double でなければならない場合に役に立ちます。このプロパティの既定値は.NET と MATLAB の間のデータ変換のルール (MATLAB Compiler SDK)の既定ルールを使用する mwTypeDefault
です。
PropertyDateBias As Long
このプロパティは COM から MATLAB の数値の日付への変換を実行をするための日付バイアスを設定します。このプロパティの既定値は 693960 で、COM Date
型と MATLAB の数値の日付の差を表しています。このフラグにより、数値の日付が 693960 で既にインクリメントされた既存の MATLAB コードは、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
という名前のクラスは、バージョンが 1.0 で mycomponent
という名前のコンポーネントに含まれているとします。サブルーチンは 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
Property InputDateFormat As mwDateFormat
このプロパティは、MATLAB Compiler SDK のクラスに対するメソッド呼び出しに入力パラメーターとして渡された日付を変換します。既定値は mwDateFormatNumeric
です。このフラグによって示される動作を以下の表に示します。
入力日付の変換ルール
値 | 動作 |
---|---|
| .NET と MATLAB の間のデータ変換のルール (MATLAB Compiler SDK)にリストされているルールに示されるように日付を数値に変換します。 |
| 入力日付を文字列に変換します。 |
PropertyOutputAsDate As Boolean
このプロパティは出力引数を日付として処理します。既定では、コンパイルされた MATLAB 関数からの出力パラメーターである数値の日付は、COM の日付バイアス (693960) によるデクリメントだけでなく、COM 日付への型強制を必要とする Double
として渡されます。すべての Double
型の出力値を変換するには、このフラグを True
に設定します。
ReplaceMissing (mwReplaceMissingData 型)
このプロパティは列挙型であり、mwReplaceNaN
および mwReplaceZero
の 2 つのうちいずれかの値を取ることができます。
入力パラメーターにより参照される空のセルを 0 として処理するには、値を mwReplaceZero
に設定します。入力パラメーターにより参照される空のセルを NaN
(非数) として処理するには、値を mwReplaceNaN
に設定します。
既定では、値は mwReplaceZero
です。
Sub Clone(ppFlags As MWFlags)
MWFlags
オブジェクトのコピーを作成します。
パラメーター
引数 | 型 | 説明 |
---|---|---|
|
| コピーを受け取るために、初期化されていない |
戻り値
なし
注意
Clone は新規 MWFlags
オブジェクトを割り当て、オブジェクトの内容のディープ コピーを作成します。既存のオブジェクト参照の共有コピーではなく、別のオブジェクトが必要な場合はこの関数を呼び出します。