fileEnsembleDatastore
カスタム ファイル形式でのアンサンブル データの管理
説明
fileEnsembleDatastore
オブジェクトは、測定データを使用した状態監視と予知保全のアルゴリズム開発に特化したデータストアです。
アンサンブルは、ファイルのコレクションに保存されたメンバー データのコレクションです。fileEnsembleDatastore
オブジェクトは、アンサンブルのデータ変数、独立変数、および状態変数を指定します。関数を提供すると、ファイルのコレクションから各種の変数を読み取る方法が fileEnsembleDatastore
オブジェクトに指示されます。このように fileEnsembleDatastore
を使用することで、あらゆるファイル形式や変数構成で保存されたアンサンブル データを管理できます。
fileEnsembleDatastore
オブジェクトのデータは、Amazon S3™ (Simple Storage Service)、Windows Azure® Blob Storage、および Hadoop® 分散ファイル システム (HDFS™) を使用するクラウド ストレージなど、リモート ロケーションを含む、MATLAB® データストアによってサポートされている任意のロケーションに保存できます。
ファイル アンサンブル データストアの使用の詳細な例については、測定データを含むファイル アンサンブル データストアを参照してください。Predictive Maintenance Toolbox™ におけるデータ アンサンブルの一般的な情報については、状態監視と予知保全のためのデータ アンサンブルを参照してください。
作成
構文
説明
入力引数
location
— ファイルまたはフォルダー
string | 文字ベクトル | string 配列 | 文字ベクトルの cell 配列
アンサンブル データの読み取り元のファイルまたはフォルダー。string、文字ベクトル、string 配列、または文字ベクトルの cell 配列として指定します。ファイルが現在のフォルダーにない場合は、location
は絶対パスまたは相対パスを含む必要があります。
フォルダーを指定した場合は、fileEnsembleDatastore
はそのフォルダー内の extension
で指定された拡張子を持つそのフォルダー内のすべてのファイルを使用します。または、含めるファイルのリストを明示的に指定します。また、location
を指定するときにワイルドカード文字 (*) を使用することもできます。この文字は、一致するすべてのファイルまたは一致するフォルダー内のすべてのファイルがデータストアに含まれることを示しています。
ファイル パスは、Amazon S3 (Simple Storage Service)、Windows Azure Blob Storage、および Hadoop 分散ファイル システム (HDFS) を使用するクラウド ストレージなど、リモート ロケーションを指す IRI パスを含む、MATLAB データストアによってサポートされている任意の場所に指定できます。MATLAB におけるリモート データの操作の詳細については、リモート データの操作を参照してください。
例: pwd + "\simResults"
例: {'C:\dir\data\file1.xls','C:\dir\data\file2.xlsx'}
例: "../dir/data/*.mat"
extension
— ファイルの拡張子
string | 文字ベクトル | string ベクトル
データストア内のファイルの拡張子。".mat"
または '.csv'
など、string、または文字ベクトルとして指定します。
データストアに複数の拡張子をもつファイルがある場合は、[".xls",".xlsx"]
のような string ベクトルで指定します。ReadFcn
と WriteToMemberFcn
プロパティに指定する関数は、指定されたすべてのファイル タイプを操作できる必要があります。
プロパティ
ReadFcn
— 選択したすべての変数を読み取る関数
[]
(既定値) | 関数ハンドル
選択されたすべての変数をアンサンブルから読み取る関数。提供する関数へのハンドルとして指定します。アンサンブルのメンバーを含むデータ ファイルから、データ変数を読み取る方法を指示する関数を記述します。関数には、以下の要素があります。
2 つの入力。ファイル名 (string) と、ファイルから読み込む信号名 (string ベクトル)
1 つの出力。各独立変数に対する table 変数を含む table 行
ReadFcn
を指定した場合は、ソフトウェアはこの関数を使用して、DataVariables
、IndependentVariables
、ConditionVariables
のどれで名前が付けられているかにかかわらず、アンサンブルから選択したすべての変数を読み取ります。
たとえば、ファイルから変数を読み取る関数 readVars
を以下のように記述したとします。この関数は、入力 string ベクトル variables
に一致するデータ ファイルの変数を含む table を作成します。
function data = readVars(filename,variables) data = table(); mfile = matfile(filename); % Allows partial loading for ct=1:numel(variables) val = mfile.(variables{ct}); if numel(val) > 1 val = {val}; end data.(variables{ct}) = val; end end
関数を現在のフォルダーまたはパス上の MATLAB ファイルに保存します。次に、fensemble
という fileEnsembleDatastore
を作成した場合は ReadFcn
を次のように設定します。
fensemble.ReadFcn = @readVars;
read(fensemble)
を呼び出すと、ソフトウェアは readVars
を使用して、アンサンブル データストアの SelectedVariables
プロパティ内のすべての変数を読み取ります。このプロパティは、fileEnsembleDatastore
メンバーからデータを読み取るために設定する必要があります。設定しないと、read
にエラーが発生します。
WriteToMemberFcn
— データを追加する関数
[]
(既定値) | 関数ハンドル
最後に読み取られたアンサンブルのメンバーにデータを書き込む関数。提供する関数へのハンドルとして指定します。アンサンブルのメンバーを含むデータ ファイルへ、データ変数を書き込む方法を指示する関数を記述します。関数には、以下の要素があります。
2 つの入力。ファイル名 (string) と、フィールド名が書き込み先のデータ変数であり、その値が対応する値であるデータ構造体
出力なし
たとえば、ファイルにデータを書き込む関数 writeNewData
を以下のように記述したとします。この関数は、data
という名前の入力データ構造体を、指定されたデータ ファイルに書き込みます。
function writeNewData(filename,data) save(filename, '-append', '-struct', 'data'); end
writeNewData
を現在のフォルダーまたはパス上の MATLAB ファイルに保存します。次に、fensemble
という fileEnsembleDatastore
を作成した場合は WriteToMemberFcn
を次のように設定します。
fensemble.WriteToMemberFcn = @writeNewData;
fensemble
で writeToLastMemberRead
コマンドを呼び出すと、ソフトウェアは writeNewData
を使用して、最後に読み取ったアンサンブル メンバーのデータ ファイルに新しいデータを追加します。このプロパティは、fileEnsembleDatastore
メンバーにデータを追加するために設定する必要があります。設定しないと、writeToLastMemberRead
にエラーが発生します。
DataVariables
— アンサンブルのデータ変数
[]
(既定値) | string 配列
アンサンブル内のデータ変数。string 配列として指定します。データ変数とは、アンサンブルのメンバーの主な内容です。データ変数には、予知保全アルゴリズムの解析と開発用の測定データまたは派生データが含まれます。たとえば、データ変数には、測定またはシミュレーションされた振動信号と、平均振動値または振動ピーク周波数などの派生値が含まれる場合があります。実際には、データ変数、独立変数、および状態変数はすべて別個の変数セットです。
DataVariables
は {'Vibration';'Tacho'}
のように文字ベクトルの cell 配列で指定することもできますが、変数名は常に ["Vibration";"Tacho"]
という string 配列として格納されます。変数名の行列を指定した場合は、行列は列ベクトルにフラット化されます。
IndependentVariables
— アンサンブル内の独立変数
[]
(既定値) | string 配列
アンサンブル内の独立変数。string 配列として指定します。通常、アンサンブルのメンバーに順序を付けるには、独立変数を使用します。たとえば、タイムスタンプ、操作時間数、走行距離などです。このプロパティには、アンサンブル内のこのような変数の名前を設定します。実際には、データ変数、独立変数、および状態変数はすべて別個の変数セットです。
IndependentVariables
は {'Time';'Age'}
のように文字ベクトルの cell 配列で指定することもできますが、変数名は常に ["Time";"Age"]
という string 配列として格納されます。変数名の行列を指定した場合は、行列は列ベクトルにフラット化されます。
ConditionVariables
— アンサンブル内の状態変数
[]
(既定値) | string 配列
アンサンブル内の状態変数。string 配列として指定します。状態変数を使用して、アンサンブルのメンバーが収集された故障状態または他の動作状態に従って、アンサンブルのメンバーにラベルを付けます。実際には、データ変数、独立変数、および状態変数はすべて別個の変数セットです。
ConditionVariables
は {'GearFault';'Temperature'}
のように文字ベクトルの cell 配列で指定することもできますが、変数名は常に ["GearFault";"Temperature"]
という string 配列として格納されます。変数名の行列を指定した場合は、行列は列ベクトルにフラット化されます。
SelectedVariables
— 読み取る変数
[]
(既定値) | string 配列
アンサンブルから読み取る変数。string 配列として指定します。このプロパティを使用して、read
コマンドで現在のメンバー アンサンブルからデータを読み取る際に、どの変数を MATLAB ワークスペースに抽出するかを指定します。read
は、SelectedVariables
で指定された各名前の table 変数を含む table 行を返します。たとえば、6 つの変数を含むアンサンブル fensemble
があり、そのうちの 2 つ、Vibration
と FaultState
のみを読み取るとします。SelectedVariables
プロパティを設定し、read
を呼び出します。
fensemble.SelectedVariables = ["Vibration";"FaultState"]; data = read(fensemble)
SelectedVariables
は、DataVariables
、ConditionVariables
、IndependentVariables
の各プロパティに含まれる変数の任意の組み合わせにできます。SelectedVariables
が空の場合は、read
にエラーが発生します。
SelectedVariables
は {'Vibration';'Tacho'}
のように文字ベクトルの cell 配列で指定できますが、変数名は常に string 配列 ["Vibration";"Tacho"]
として格納されます。変数名の行列を指定した場合は、行列は列ベクトルにフラット化されます。
ReadSize
— 読み取るメンバー数
1 (既定値) | 正の整数
アンサンブル データストアから一度に読み取るメンバーの数。アンサンブル内のメンバーの合計数よりも小さい正の整数として指定します。既定では、read
コマンドは、1 つのアンサンブル メンバーからのデータを含む 1 行の table を返します。1 回の read
操作で複数のメンバーからデータを読み取る場合は、このプロパティに 1 より大きい整数値を設定します。たとえば、ReadSize
= 3 の場合は、read
は 3 行の table を返し、各行には異なるアンサンブル メンバーからのデータが含まれます。未読のメンバーが ReadSize
より少ない場合は、read
は残りのメンバーの数だけ行を持つ table を返します。
アンサンブル データストアの LastMemberRead
プロパティは、直近の read
操作で読み取られたすべてのファイル名を含んでいます。したがって、たとえば、ReadSize
= 3 の場合は、read
の操作で、LastMemberRead
に 3 つのファイル名を含む string ベクトルが設定されます。
writeToLastMemberRead
を使用する場合は、書き込むデータを ReadSize
と等しい行数をもつ table として指定します。writeToLastMemberRead
コマンドは、LastMemberRead
で指定されたメンバーを更新し、指定された各ファイルに 1 つの table 行を書き込みます。
また、ReadSize
プロパティを変更すると、アンサンブルは未読の状態にリセットされます。たとえば、一部のアンサンブル メンバーを一度に 1 つずつ読み取り (ReadSize
= 1)、ReadSize
を 3 に変更したとします。次の read
操作により、最初の 3 つのアンサンブル メンバーからのデータが返されます。
NumMembers
— アンサンブル内のメンバー数
正の整数
この プロパティ は読み取り専用です。
アンサンブル内のメンバー数。正の整数で指定します。
LastMemberRead
— 最後に読み取られたアンサンブル メンバーのファイル名
""
(既定値) | string | string 配列
この プロパティ は読み取り専用です。
MATLAB ワークスペースに最後に読み取られたアンサンブル メンバーのファイル名。string として指定されます。read
コマンドを使用してアンサンブル・データストアからデータを読み取ると、次に読み取るアンサンブル メンバーがソフトウェアによって決定され、対応するファイルからデータが読み取られます。LastMemberRead
プロパティは、最後に読み取られたファイルのパスを含んでいます。アンサンブル データストアがまだ読み取られていない場合や、リセットされている場合は、LastMemberRead
は空の string になります。
アンサンブル データストアにデータを戻すために writeToLastMemberRead
を呼び出すと、その関数は LastMemberRead
で指定されたファイルに書き込まれます。
既定では、read
一度に 1 つのアンサンブル メンバーからデータを読み取ります (アンサンブル データストアの ReadSize
プロパティは 1)。ReadSize
> 1 のとき、LastMemberRead
は、直近の read
操作で読み取った全ファイルのパスを含む string 配列です。
Files
— アンサンブル データストア内のファイルのリスト
string ベクトル
この プロパティ は読み取り専用です。
アンサンブル データストア内のファイルのリスト。長さ NumMembers
の列 string ベクトルとして指定します。各エントリには、データストア内のファイルへの絶対パスが含まれます。ファイルは、read
コマンドがアンサンブル メンバーを読み取った順番に並んでいます。
例: ["C:\Data\Data_01.csv"; "C:\Data\Data_02.csv"; "C:\Data\Data_03.csv"]
オブジェクト関数
関数 read
、writeToLastMemberRead
および subset
は、Predictive Maintenance Toolbox アンサンブル データに特化しています。reset
および hasdata
など、その他の関数は、MATLAB の datastore
オブジェクトで使用される関数と同一です。1 つのコマンドですべてのメンバー データを table または cell 配列に転送するには、readall
を使用します。特定のアンサンブル メンバーを、より小規模か、より特化したアンサンブル データストアに抽出するには、subset
を使用します。アンサンブル データストアを分割するには、関数 partition
の partition(ds,n,index)
構文を使用します。
read | アンサンブル データストアからメンバー データを読み取り |
writeToLastMemberRead | アンサンブル データストアのメンバーにデータを書き込み |
subset | 既存のアンサンブル データストアのサブセットから新しいアンサンブル データストアを作成 |
reset | データストアの初期状態へのリセット |
hasdata | データが読み取り可能かどうかを判別 |
progress | 読み取ったデータ量の判定 |
readall | データストアのすべてのデータの読み取り |
numpartitions | データストアの区画数 |
partition | データストアを分割する |
tall | tall 配列の作成 |
isPartitionable | データストアが分割可能かどうかを判別 |
isShuffleable | データストアがシャッフル可能かどうかを判別 |
例
ファイル アンサンブル データストアの作成と構成
MATLAB® ファイルに保存されたデータ用にファイル アンサンブル データストアを作成し、データストアからの読み取りとデータストアへの書き込み方法をソフトウェアに指示する関数で構成します。
この例では、ベアリング システムの健全な動作データを含む、baseline_01.mat
と baseline_02.mat
という 2 つのデータ ファイルがあります。また、同じシステムの故障データを含む FaultData_01.mat
、FaultData_02.mat
、FaultData_03.mat
の 3 つのデータ ファイルもあります。
unzip fileEnsData.zip % extract compressed files location = pwd; extension = '.mat'; fensemble = fileEnsembleDatastore(location,extension);
アンサンブル内のデータを操作するには、その前に、MATLAB ワークスペースに変数を読み取り、データをファイルに書き戻すためのデータ ファイルの処理方法をソフトウェアに指示する関数を作成しなければなりません。これらの関数を、ファイル パス上の場所に保存します。この例では、指定された以下の関数を使用します。
readBearingData
— 要求された変数を構造体bearing
から抽出し、ファイルに保存されている他の変数を抽出します。この関数はデータの故障状態についてファイル名の解析も行います。関数は、要求された各変数に対して 1 つの table 変数を含む table 行を返します。writeBearingData
— 構造体を受け入れて、その変数を個々の格納された変数としてデータ ファイルに書き込みます。
fensemble.ReadFcn = @readBearingData; fensemble.WriteToMemberFcn = @writeBearingData;
最後に、データ変数、状態変数、読み取るために選択した変数を識別するようにアンサンブルのプロパティを設定します。この例では、データ ファイルの変数は、gs
、sr
、load
、rate
とします。故障ラベル、gs
、sr
だけを読み取る必要があるとします。これらの変数を、選択した変数として設定します。
fensemble.DataVariables = ["gs";"sr";"load";"rate"]; fensemble.ConditionVariables = ["label"]; fensemble.SelectedVariables = ["label";"gs";"sr"];
アンサンブルを確認します。関数と変数名が適切なプロパティに割り当てられています。
fensemble
fensemble = fileEnsembleDatastore with properties: ReadFcn: @readBearingData WriteToMemberFcn: @writeBearingData DataVariables: [4x1 string] IndependentVariables: [0x0 string] ConditionVariables: "label" SelectedVariables: [3x1 string] ReadSize: 1 NumMembers: 5 LastMemberRead: [0x0 string] Files: [5x1 string]
これらの割り当てた関数は、アンサンブルを構成するデータ ファイルの操作方法を read
コマンドと writeToLastMemberRead
コマンドに指示します。たとえば、read
コマンドを呼び出すと、コマンドは readBearingData
を使用して fensemble.SelectedVariables
内のすべての変数を読み取ります。詳細な例は、測定データを含むファイル アンサンブル データストアを参照してください。
ファイル アンサンブル データストアへの読み取りと書き込み
MATLAB ファイルに保存されたデータ用にファイル アンサンブル データストアを作成し、データストアからの読み取りとデータストアへの書き込み方法をソフトウェアに指示する関数で構成します。(ファイル アンサンブル データストアの構成の詳細については、測定データを含むファイル アンサンブル データストアを参照してください。)
% Create ensemble datastore that points to datafiles in current folder unzip fileEnsData.zip % extract compressed files location = pwd; extension = '.mat'; fensemble = fileEnsembleDatastore(location,extension); % Specify data and condition variables fensemble.DataVariables = ["gs";"sr";"load";"rate"]; fensemble.ConditionVariables = "label"; % Configure with functions for reading and writing variable data fensemble.ReadFcn = @readBearingData; fensemble.WriteToMemberFcn = @writeBearingData;
関数は、アンサンブルを構成するデータ ファイルの操作方法を read
コマンドと writeToLastMemberRead
コマンドに指示します。したがって、read
コマンドを呼び出すと、コマンドは readBearingData
を使用して fensemble.SelectedVariables
内のすべての変数を読み取ります。この例では、readBearingData
が、要求された変数を構造体 bearing
から抽出し、ファイルに保存されている他の変数を抽出します。また、データの故障状態についてファイル名の解析も行います。
読み取る変数を指定して、アンサンブルの最初のメンバーからそれらを読み取ります。
fensemble.SelectedVariables = ["gs";"load";"label"]; data = read(fensemble)
data=1×3 table
label gs load
________ _______________ ____
"Faulty" {5000x1 double} 0
これで、メンバーからのデータを必要に応じて処理できます。この例では、変数 gs
に保存されている信号の平均値を計算します。read
によって返された table からデータを抽出します。
gsdata = data.gs{1}; gsmean = mean(gsdata);
平均値 gsmean
は、新しい変数としてデータ ファイルに書き戻すことができます。これを行うには、まずアンサンブルのデータ変数のリストを拡張して、新しい値の変数を含めます。新しい変数 gsMean
を呼び出します。
fensemble.DataVariables = [fensemble.DataVariables;"gsMean"]
fensemble = fileEnsembleDatastore with properties: ReadFcn: @readBearingData WriteToMemberFcn: @writeBearingData DataVariables: [5x1 string] IndependentVariables: [0x0 string] ConditionVariables: "label" SelectedVariables: [3x1 string] ReadSize: 1 NumMembers: 5 LastMemberRead: "/tmp/Bdoc24a_2528353_1096756/tpfe6adf35/predmaint-ex34165887/FaultData_01.mat" Files: [5x1 string]
次に、派生した平均値を、最後に読み取られたアンサンブル メンバーに対応するファイルに書き込みます。(状態監視と予知保全のためのデータ アンサンブルを参照してください。)writeToLastMemberRead
を呼び出すと、これはデータを構造体に変換し、fensemble.WriteToMemberFcn
を呼び出してデータをファイルに書き込みます。
writeToLastMemberRead(fensemble,'gsMean',gsmean);
read
を再度呼び出すと、最後に読み取られたメンバーのインジケーターがアンサンブルの次のファイルに進み、そのファイルからデータが読み取られます。
data = read(fensemble)
data=1×3 table
label gs load
________ _______________ ____
"Faulty" {5000x1 double} 50
これが別のメンバーからのデータであることは、table 内の load
変数を調べることによって確認できます。ここでの値は 50 ですが、前に読み取られたメンバーでは 0 でした。
処理手順を繰り返してこのアンサンブル メンバーの平均を計算し追加することは可能です。実際には、データの読み取り、処理、および書き込みのプロセスを自動化するとさらに便利です。これを行うには、アンサンブルをデータが読み取られていない状態にリセットします。その後、アンサンブルをループ処理して、各メンバーの読み取り、処理、および書き込みの手順を実行します。
reset(fensemble) while hasdata(fensemble) data = read(fensemble); gsdata = data.gs{1}; gsmean = mean(gsdata); writeToLastMemberRead(fensemble,'gsMean',gsmean); end
アンサンブルのすべてのメンバーが読み取られると、hasdata
コマンドは false
を返します。ここで、アンサンブル内の各データ ファイルには、そのファイルのデータ gs
から求められた変数 gsMean
が含まれています。予知保全アルゴリズムを開発する際、このループのような手法を使ってアンサンブル ファイルからデータを抽出し処理することができます。アルゴリズム開発のプロセスにおけるファイル アンサンブル データストアの使用をさらに詳しく説明する例は、転動体ベアリングの故障診断を参照してください。また、この例には Parallel Computing Toolbox™ を使って大規模なデータ アンサンブルの処理を高速化する方法も示されています。
派生した変数がファイル アンサンブル データストアに存在することを確認するには、最初と 2 番目のアンサンブル メンバーからこれらを読み取ります。そのためには、アンサンブルを再びリセットし、選択した変数に新しい変数を追加します。実際には、派生値を計算した後はその値のみを読み取り、かなりのメモリ空間をとる可能性のある未処理データは読み取らないようにするのが有益です。この例では、新しい変数 gsMean
を含み、未処理のデータ gs
は含まない、選択した変数を読み取ります。
reset(fensemble) fensemble.SelectedVariables = ["label";"load";"gsMean"]; data1 = read(fensemble)
data1=1×3 table
label load gsMean
________ ____ ________
"Faulty" 0 -0.22648
data2 = read(fensemble)
data2=1×3 table
label load gsMean
________ ____ ________
"Faulty" 50 -0.22937
バージョン履歴
R2018a で導入R2018b: DataVariablesFcn
、IndependentVariablesFcn
、ConditionVariablesFcn
プロパティは削除されます
DataVariablesFcn
、IndependentVariablesFcn
、ConditionVariablesFcn
プロパティは、将来のリリースで削除されます。代わりに、ReadFcn
プロパティを使用します。
R2018b で導入された ReadFcn
プロパティでは、アンサンブル データストアからすべての変数タイプを読み取るための 1 つの関数を指定できます。従来は、データ変数、独立変数、および状態変数にそれぞれ関数を指定する必要がありました。ReadFcn
を使用する利点は、read
操作の際、各メンバー ファイルに一度アクセスするだけで、すべての変数を読み取れることです。変数の型ごとに関数が異なる場合、read
はすべての変数の型を読み取るために最大 3 回ファイルを開くことになります。したがって、ReadFcn
を 1 つ指定するほうが効率的にデータストアにアクセスできます。
新しいプロパティを使用するようコードを更新するには、以下の手順に従います。
fileEnsembleDatastore
の読み取り関数を、すべての型の変数を読み取る新しい関数に書き換えます。(こうした関数の例については、ファイル アンサンブル データストアの作成と構成を参照してください。)DataVariablesFcn
、IndependentVariablesFcn
、ConditionVariablesFcn
を[]
に設定してクリアします。ReadFcn
を新しい関数に設定します。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)