Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

workspaceEnsemble

診断特徴デザイナーで生成されたコードを使用して、MATLAB ワークスペースに保存されたアンサンブル データを管理します。

R2020a 以降

説明

workspaceEnsemble オブジェクトは、診断特徴デザイナーで生成されたコードで使用するために特化したアンサンブル オブジェクトです。workspaceEnsemble オブジェクトと fileEnsembleDatastore オブジェクトは、両方ともアンサンブルのデータ変数、独立変数、および状態変数を指定するため、類似しています。しかし、ファイル アンサンブル データストアとは異なり、ワークスペース アンサンブルは、外部ファイルではなくメモリのデータに対して動作します。

table や cell 配列をアプリにインポートし、対話型の特徴設計が完了した後にコードを生成する場合は、そのコードにはワークスペース アンサンブルの作成が含まれます。このアンサンブルには、最初のインポートで使用したものと同じ変数が含まれており、同じ変数を含む入力データ セットを管理できます。たとえば、20 メンバーの table をアプリにインポートし、特徴を抽出し、関数を生成するとします。その関数のワークスペース アンサンブルは、同じ変数を含む table であれば、2000 メンバーの table と互換性があります。

データ アンサンブルの詳細については、状態監視と予知保全のためのデータ アンサンブルを参照してください。

作成

説明

wsensemble = workspaceEnsemble(Name,Value) は、名前と値のペアの引数で指定されたプロパティを持つ空の workspaceEnsemble オブジェクト wsensemble を作成します。

wsensemble = workspaceEnsemble(data,Name,Value) は、データ セット data から、workspaceEnsemble オブジェクト wsensemble を作成します。

入力引数

すべて展開する

入力データ セット。table の cell 配列として指定します。

  • data が table の場合は、各行は 1 つのアンサンブル メンバーのデータを表します。

  • data が cell 配列の場合は、cell の各 table は 1 つのアンサンブル メンバーのデータを表します。

プロパティ

すべて展開する

アンサンブル内のデータ変数。string または cell 配列として指定します。データ変数とは、アンサンブルのメンバーの主な内容です。データ変数には、測定データまたは派生データが含まれます。たとえば、データ変数には、測定された振動またはシミュレーションされた振動信号と、平均振動値または振動ピーク周波数などの派生値が含まれる場合があります。

例: outputEnsemble = workspaceEnsemble(inputData,'DataVariables',["Vibration";"Tacho"])

アンサンブル内の独立変数。string または cell 配列として指定します。通常、独立変数はアンサンブルのメンバーに順序を付けます。たとえば、タイスタンプまたは操作サイクル数です。

例: outputEnsemble = workspaceEnsemble(inputData,'IndependentVariables',"Time")

アンサンブル内の状態変数。string または cell 配列として指定します。状態変数は、アンサンブルのメンバーが収集された故障状態または他の動作状態に従って、アンサンブルのメンバーにラベルを付けます。

例: outputEnsemble = workspaceEnsemble(inputData,'ConditionVariables',"faultCode")

アンサンブルから読み取る変数。string または cell 配列として指定します。SelectedVariables は、data のどの変数を読み取って操作するかを特定します。

例: outputEnsemble.SelectedVariables = ["Vibration","Tacho"]

read コマンドの使用時にワークスペース アンサンブルから一度に読み取るメンバーの数。アンサンブル内のメンバーの合計数よりも小さい正の整数として指定します。既定では、read コマンドは、1 つのアンサンブル メンバーからのデータを含む 1 行の table を返します。1 回の read 操作で複数のメンバーからデータを読み取る場合は、このプロパティに 1 より大きい整数値を設定します。たとえば、ReadSize が 3 の場合は、read は 3 行の table を返し、各行には異なるアンサンブル メンバーからのデータが含まれます。未読のメンバーが ReadSize より少ない場合は、read は残りのメンバーの数だけ行を持つ table を返します。

また、ReadSize プロパティを変更すると、アンサンブルは未読の状態にリセットされます。たとえば、ReadSize1 に設定して、一部のアンサンブル メンバーを一度に 1 つずつ読み取り、ReadSize3 に変更したとします。次の read 操作により、最初の 3 つのアンサンブル メンバーからのデータが返されます。

オブジェクト関数

refresh並列処理で計算されて変更または追加されたデータの分割でワークスペース アンサンブルを更新
writeMember特定のワークスペース アンサンブル メンバーにデータを書き込み
readMemberアンサンブル メンバー データをメンバー インデックスに基づいて返す
findIndex指定された変数の名前と値に一致するメンバーのワークスペース アンサンブル メンバー インデックスを特定

すべて折りたたむ

アンサンブル table から workspaceEnsemble オブジェクトを作成し、その内容を読み取ります。

アンサンブル table dataTable を読み込み、最初の 3 つのメンバーを表示します。

load dfd_Tutorial dataTable
head(dataTable,3)
        Vibration               Tacho           faultCode
    __________________    __________________    _________

    {6000x1 timetable}    {6000x1 timetable}        0    
    {6000x1 timetable}    {6000x1 timetable}        1    
    {6000x1 timetable}    {6000x1 timetable}        1    

table には 16 のメンバーが含まれており、それぞれには、振動データ、タコメーター データ、スカラー故障コードが含まれる timetable があります。

ワークスペース アンサンブルの作成

dataTable からワークスペース アンサンブル wensemble を作成します。

wensemble = workspaceEnsemble(dataTable,'DataVariables',["Vibration";"Tacho"],...
           'ConditionVariables',"faultCode")
wensemble = 
  workspaceEnsemble with properties:

           DataVariables: [2x1 string]
    IndependentVariables: [0x0 string]
      ConditionVariables: "faultCode"
       SelectedVariables: [3x1 string]
                ReadSize: 1
              NumMembers: 16
          LastMemberRead: [0x0 string]

データ状態変数の選択を確認します。

dv = wensemble.DataVariables
dv = 2x1 string
    "Vibration"
    "Tacho"

cv = wensemble.ConditionVariables
cv = 
"faultCode"

ワークスペース アンサンブル メンバーの読み取り

最初の 2 つのメンバーについて、ワークスペース アンサンブルのデータ変数を検査します。

既定では、アンサンブルを読み取ると、すべてのアンサンブル変数が返されます。読み取る変数のサブセットを選択する場合は、SelectedVariables を指定します。

wensemble.SelectedVariables = ["Vibration","Tacho"];

read を使用して、次の未読のメンバーの内容を取得します。メンバーを読み取るたびに、ソフトウェアはそのメンバーを読み取ったものとしてマークし、次の read コマンドは以下のメンバーを返します。read コマンドを連続して使用することで、アンサンブルをループ処理できます。最初のメンバーから始めるには、reset を使用します。

reset(wensemble)
m1 = read(wensemble)
m1=1×2 table
        Vibration               Tacho       
    __________________    __________________

    {6000x1 timetable}    {6000x1 timetable}

m2 = read(wensemble);

m1m2 はともに振動データとタコメーター データを含む table です。m1 には、1 番目のメンバーのデータが含まれます。m2 には、2 番目のメンバーのデータが含まれます。

両方のメンバーの振動サンプルを調べます。m1 および m2 から振動信号を抽出し、各信号の最初の 3 つのサンプルを表示します。

m1vib = readMemberData(m1,'Vibration');
m2vib = readMemberData(m2,'Vibration');
head(m1vib,3)
      Time         Data  
    _________    ________

    0 sec        -0.66925
    0.005 sec    -0.61623
    0.01 sec     -0.56666
head(m2vib,3)
      Time        Data  
    _________    _______

    0 sec        -1.6231
    0.005 sec    -1.5892
    0.01 sec     -1.5534

read コマンドは一意の結果を返します。

この例では、"診断特徴デザイナー" が生成するコードで使用される基本的なコマンドのいくつかを説明します。この例では、これらのコマンドを使用して、table からワークスペース アンサンブルを作成し、新しい特徴に対してメンバーごとの計算を実行し、ワークスペース アンサンブルから特徴テーブルとアンサンブル table を作成する方法を示しています。

ワークスペース アンサンブルの操作は、ファイル アンサンブル データストアやシミュレーション アンサンブル データストアの操作と類似しています。多くのコマンドがこれと同様です。外部ファイルの操作が可能なアンサンブル データストアとは異なり、ワークスペース アンサンブル データストアは、メモリ内のデータの操作が可能です。

table からワークスペース アンサンブルを作成

アンサンブル table dataTable を読み込みます。この table には 16 のメンバーが含まれており、それぞれには、振動データ、タコメーター データ、スカラー故障コードが含まれる timetable があります。

load dfd_Tutorial dataTable

dataTable からワークスペース アンサンブル wensemble を作成し、dataTable の変数に対応するデータ変数と状態変数を指定します。

wensemble = workspaceEnsemble(dataTable,'DataVariables',["Vibration";"Tacho"],...
           'ConditionVariables',"faultCode")
wensemble = 
  workspaceEnsemble with properties:

           DataVariables: [2x1 string]
    IndependentVariables: [0x0 string]
      ConditionVariables: "faultCode"
       SelectedVariables: [3x1 string]
                ReadSize: 1
              NumMembers: 16
          LastMemberRead: [0x0 string]

データの処理と特徴の抽出に必要なのは、VibrationTacho のみです。VibrationTacho を含むように SelectedVariables を指定します。

wensemble.SelectedVariables = ["Vibration","Tacho"];

最初のアンサンブル メンバーの振動信号の平均値の計算

振動信号の平均値は、各メンバーのスカラーの特徴を表しています。複数のメンバーを処理するループにスケーリングする方法を使用して、最初のメンバーについてこの特徴を計算します。

アンサンブルをリセットして、最初のメンバーを読み取ります。

reset(wensemble)
m = read(wensemble)
m=1×2 table
        Vibration               Tacho       
    __________________    __________________

    {6000x1 timetable}    {6000x1 timetable}

メンバー table m から振動データを抽出します。

mvibd = readMemberData(m,'Vibration');

振動の平均値を計算します。

m_mean = mean(mvibd.Data)
m_mean = 0.0218

結果を m に追加します。

m = [m,table(m_mean,'VariableNames',"Data_Mean")]
m=1×3 table
        Vibration               Tacho           Data_Mean
    __________________    __________________    _________

    {6000x1 timetable}    {6000x1 timetable}    0.021809 

新しい特徴をアンサンブル変数に追加

更新されたメンバーを wensemble に組み込むには、まず、新しい Data_Mean 特徴をアンサンブル変数として指定する必要があります。ドット表記を使用して、Data_Mean をアンサンブル データ変数のセット dv に追加します。

dv = wensemble.DataVariables;
wensemble.DataVariables = [dv;"Data_Mean"];

更新されたメンバー table をワークスペース アンサンブルに追加

writeToLastMemberRead コマンドを使用して、更新されたメンバー table をアンサンブルに追加します。

writeToLastMemberRead(wensemble,m)

残りのアンサンブル メンバーのループ処理

残りのアンサンブル メンバーについても、同じメンバー固有の手順を実行します。

while hasdata(wensemble)
    m = read(wensemble);
    mvibd = readMemberData(m,'Vibration');
    m_mean = mean(mvibd.Data);
    m = [m,table(m_mean,'VariableNames',"Data_Mean")];
    writeToLastMemberRead(wensemble,m)
end

ワークスペース アンサンブルから特徴テーブルとアンサンブル table を作成

readFeatureTable コマンドで wensemble から特徴テーブルを抽出します。最初の 3 行を表示します。

ft = readFeatureTable(wensemble);
head(ft,3)
    faultCode    Data_Mean 
    _________    __________

        0          0.021809
        1        -0.0092964
        1          -0.46431

特徴テーブルには、状態変数 FaultCode とデータ変数 Data_Mean が含まれます。

SelectedVariables プロパティを設定してすべての変数を含めることで、結果のアンサンブル table にすべての情報が含まれるようにします。

wensemble.SelectedVariables = ["Vibration";"Tacho";"Data_Mean";"faultCode"]
wensemble = 
  workspaceEnsemble with properties:

           DataVariables: [3x1 string]
    IndependentVariables: [0x1 string]
      ConditionVariables: "faultCode"
       SelectedVariables: [4x1 string]
                ReadSize: 1
              NumMembers: 16
          LastMemberRead: "Member 16"

データストア コマンド readall を使用して、ワークスペース アンサンブルをアンサンブル table に変換します。

tensemble = readall(wensemble)
tensemble=16×4 table
        Vibration               Tacho           Data_Mean     faultCode
    __________________    __________________    __________    _________

    {6000x1 timetable}    {6000x1 timetable}      0.021809        0    
    {6000x1 timetable}    {6000x1 timetable}    -0.0092964        1    
    {6000x1 timetable}    {6000x1 timetable}      -0.46431        1    
    {6000x1 timetable}    {6000x1 timetable}        0.4922        1    
    {6000x1 timetable}    {6000x1 timetable}        0.3923        1    
    {6000x1 timetable}    {6000x1 timetable}      -0.12383        1    
    {6000x1 timetable}    {6000x1 timetable}       0.42548        1    
    {6000x1 timetable}    {6000x1 timetable}       -0.4598        1    
    {6000x1 timetable}    {6000x1 timetable}      0.062685        0    
    {6000x1 timetable}    {6000x1 timetable}      0.059155        0    
    {6000x1 timetable}    {6000x1 timetable}      0.037965        0    
    {6000x1 timetable}    {6000x1 timetable}       0.53982        1    
    {6000x1 timetable}    {6000x1 timetable}       0.52377        1    
    {6000x1 timetable}    {6000x1 timetable}        1.0357        1    
    {6000x1 timetable}    {6000x1 timetable}        1.0592        1    
    {6000x1 timetable}    {6000x1 timetable}      -0.94084        1    

table には、元の信号と新しい特徴が含まれます。

バージョン履歴

R2020a で導入