クラス MWFlags
MWFlags クラスには、一連の配列形式フラグとデータ変換フラグが含まれています。MATLAB® と COM オートメーション間の型変換の詳細については、.NET と MATLAB の間のデータ変換のルールを参照してください。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 の間のデータ変換のルールにリストされている既定の変換ルールに従って配列を変換します。 |
|
| すべての配列を強制的に cell 配列に変換します。入力スカラーまたは数値配列引数は、各セルがそれぞれのインデックスのスカラー値を含む cell 配列に変換されます。 |
|
| すべての配列を強制的に行列に変換します。 |
Property InputArrayIndFlag As Long
このプロパティは、入れ子配列 (Variant の配列が渡され、配列の各要素は配列自身) に対して InputArrayFormat プロパティにより設定されたルールを適用するレベルを制御します。varargin パラメーターのためにこのフラグを変更する必要はありません。データ変換コードは varargin セルに対するこのフラグの値を自動的に 1 ずつインクリメントするため、InputArrayFormat フラグが varargin パラメーターの各セルに適用されます。既定値は 0 です。
Property OutputArrayFormat As mwArrayFormat
mwArrayFormat 型のこのプロパティは、クラス メソッドに出力パラメーターとして渡される複数の配列の形式を制御します。既定値は mwArrayFormatAsIs です。このフラグにより示される動作は次の表にまとめられています。
出力配列の配列形式化ルール
| 値 | 動作 |
|---|---|
|
| .NET と MATLAB の間のデータ変換のルールにリストされている既定の変換ルールに従って配列を変換します。 |
|
| すべての配列を強制的に行列に変換します。出力 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 の間のデータ変換のルールの既定ルールを使用する 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 の間のデータ変換のルールにリストされているルールに示されるように日付を数値に変換します。 |
|
| 入力日付を文字列に変換します。 |
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 オブジェクトを割り当て、オブジェクトの内容のディープ コピーを作成します。既存のオブジェクト参照の共有コピーではなく、別のオブジェクトが必要な場合はこの関数を呼び出します。