Main Content

クラス 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 です。このフラグにより示される動作は次の表にまとめられています。

入力配列の配列形式化ルール

動作

mwArrayFormatAsIs

.NET と MATLAB の間のデータ変換のルール (MATLAB Compiler SDK)にリストされている既定の変換ルールに従って配列を変換します。

mwArrayFormatCell

すべての配列を強制的に cell 配列に変換します。入力スカラーまたは数値配列引数は、各セルがそれぞれのインデックスのスカラー値を含む cell 配列に変換されます。

mwArrayFormatMatrix

すべての配列を強制的に行列に変換します。Variant の配列である入力引数が検出されると、既定の動作では cell 配列に変換しますが、各 Variant が単一値ですべての要素が同種かつ数値型である場合、データ コンバーターはこの配列を行列に変換します。この変換ができない場合、 cell 配列を作成します。

Property InputArrayIndFlag As Long

このプロパティは、入れ子配列 (Variant の配列が渡され、配列の各要素は配列自身) に対して InputArrayFormat プロパティにより設定されたルールを適用するレベルを制御します。varargin パラメーターのためにこのフラグを変更する必要はありません。データ変換コードは varargin セルに対するこのフラグの値を自動的に 1 ずつインクリメントするため、InputArrayFormat フラグが varargin パラメーターの各セルに適用されます。既定値は 0 です。

Property OutputArrayFormat As mwArrayFormat

mwArrayFormat 型のこのプロパティは、クラス メソッドに出力パラメーターとして渡される複数の配列の形式を制御します。既定値は mwArrayFormatAsIs です。このフラグにより示される動作は次の表にまとめられています。

出力配列の配列形式化ルール

動作

mwArrayFormatAsIs

.NET と MATLAB の間のデータ変換のルール (MATLAB Compiler SDK)にリストされている既定の変換ルールに従って配列を変換します。

mwArrayFormatMatrix

すべての配列を強制的に行列に変換します。出力 cell 配列の引数が検出されると、既定の動作では Variant の配列に変換しますが、各セルが単一値ですべての要素が同種かつ数値型である場合、データ コンバーターはこの配列を単純な数値配列を含む Variant に変換します。この変換ができない場合は、Variant の配列が作成されます。

mwArrayFormatCell

すべての出力配列を Variant の配列に強制的に変換します。出力スカラーまたは数値配列引数は、複数の Variant の配列に変換されます。それぞれの Variant には、インデックスごとにスカラー値が含まれています。

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® コード内で保持されている変数の型が、たとえば LongInteger など異なり、コンパイルされる 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 です。このフラグによって示される動作を以下の表に示します。

入力日付の変換ルール

動作

mwDateFormatNumeric

.NET と MATLAB の間のデータ変換のルール (MATLAB Compiler SDK)にリストされているルールに示されるように日付を数値に変換します。

mwDateFormatString

入力日付を文字列に変換します。

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 オブジェクトのコピーを作成します。

パラメーター

引数説明

ppFlags

MWFlags

コピーを受け取るために、初期化されていない MWFlags オブジェクトを参照します

戻り値

なし

注意

Clone は新規 MWFlags オブジェクトを割り当て、オブジェクトの内容のディープ コピーを作成します。既存のオブジェクト参照の共有コピーではなく、別のオブジェクトが必要な場合はこの関数を呼び出します。