Main Content

MATLAB の生成コードを使用した自動特徴抽出

診断特徴デザイナーでは、信号処理、特徴生成、およびランク付けのためのツールを使用して、特徴を対話的に調査します。最適な特徴を特定したら、コードを生成することで、対話的な計算を再現し、類似する入力データに対する特徴抽出を自動化できます。特徴、計算された変数、およびランク付けの各 table から、コードに含めるものを選んで指定します。

生成コードでは、次のことが可能です。

  • より多くのメンバーが含まれる、より大規模な測定データセットにコードを直接適用することで、特徴セットのメンバー数を増やす。使用するメンバー数が多くなるほど、分類学習器でのモデル学習が向上します。

  • 用途に合わせて関数を変更する。たとえば、診断特徴デザイナーで利用できない信号処理や特徴を追加できます。

  • 関数の一部を、開発している別のコード セットに組み込む。

特徴の関数の生成

自動特徴抽出用のコードを生成する最も簡単な方法は、[特徴デザイナー] タブの [エクスポート] ボタンを使用して、[特徴の関数の生成] を選択することです。

Export button in Diagnostic Feature Designer showing menu for feature and data export and for code generation

選択することで一連のオプションが開かれ、選択した特徴テーブルから、含める特徴を指定することができます。一度に 1 つの特徴テーブルのコード生成のみが可能です。

Options on Diagnostic Feature Designer for specifying features to include in code generation

すべての特徴のコードを生成できるほか、ランク付けを実行した場合は、上から何位までの特徴を含めるかを選択できます。ランク付けを実行した場合、[特徴のランク付け] タブの [エクスポート] ボタンを使用して関数を生成することもできます。生成コードには、特徴の計算に必要なあらゆる信号やスペクトルの計算が含まれます。コードには、コードが実行する計算をまとめたプリアンブルが含まれます。

%DIAGNOSTICFEATURES recreates results in Diagnostic Feature Designer.
%
% Input:
%  inputData: A table or a cell array of tables/matrices containing the
%  data as those imported into the app.
%
% Output:
%  featureTable: A table containing all features and condition variables.
%  outputTable: A table containing the computation results.
%
% This function computes signals:
%  Vibration_tsa/Data
%
% This function computes spectra:
%  Vibration_ps/SpectrumData
%
% This function computes features:
%  Vibration_sigstats/Mean
%  Vibration_tsa_rotmac/RMS
%  Vibration_tsa_rotmac/CrestFactor
%  Vibration_ps_spec/PeakAmp1
%  Vibration_ps_spec/PeakFreq1
%  Vibration_ps_spec/BandPower
%
% Organization of the function:
% 1. Compute signals/spectra/features
% 2. Extract computed features into a table
%
% Modify the function to add or remove data processing, feature generation
% or ranking operations.

特定の変数、特徴、およびランク付けの各 table の関数の生成

コード生成の選択肢をカスタマイズするには、[エクスポート]、[次の関数を生成...] オプションを使用します。このオプションでは、次のことが可能です。

  • 計算された信号やスペクトル、アンサンブル統計値、ランク付けの各 table など、アプリで計算される任意の出力のコード生成を選択する。

  • 複数の特徴の中から、入力信号や変数名テキストなど、特定の特性をもつものを選択できるよう、出力をフィルター処理する。

一度に 1 つの特徴テーブルからの特徴の関数を生成できます。フレームベースの処理を使用している場合、各特徴テーブルは 1 つの "フレーム ポリシー" (フレーム サイズとフレーム レートの組み合わせ) に関連付けられています。そのため、2 つの異なるフレーム ポリシー、または全信号モードとフレームベース モードの両方を使用して計算された特徴のコードを生成する場合、特徴テーブルごとに個別の関数を生成しなければなりません。

抽出された信号全体に依存するフレームベース信号のコードを生成する場合、生成コードには信号全体の計算も記述されます。

Function generation option with selections for full signal mode and for a frame-based mode

[エクスポート]、[次の関数を生成...] を選択して特徴のソースを選択すると、出力候補の選択肢が含まれるウィンドウが開きます。出力の各行には、出力の計算方法に関する追加情報が含まれます。

Window in Diagnostic Feature Designer for selecting code generation outputs

この図では、歪度と RMS の各特徴、およびパワー スペクトルが選択されています。[詳細] ペインには、最近選択された項目の出力と入力が表示されます。[次のコードが生成されます] ペインには、選択した項目が含まれます。

[エクスポート]、[次の関数を生成...] を選択すると、選択ウィンドウと共に、フィルター処理オプションの含まれる [コード生成] タブが開きます。

Code Generation tab in Diagnostic Feature Designer for selecting filtering options

たとえば、TSA 信号から直接計算される特徴のみを選択する場合、図に示すように、[入力]、[Vibration_tsa/Data] を選択します。

Selection for code generation input from TSA signal data only

フィルター処理された選択ウィンドウには、TSA 信号に直接基づく 3 つの特徴と共に、これも TSA 信号に直接基づくパワー スペクトルが表示されます。

Filtered selection window of features and spectrum

[出力]、[メソッド]、および [解析タイプ] でフィルター処理することもできます。たとえば、ランク付け table のコードを生成する場合、[解析タイプ]、[ランク付け] を選択します。

Code Generation tab in Diagnostic Feature Designer with Analysis Type filter set to the ranking option

選択リストには T 検定とバタチャリヤの各ランク付け table が含まれます。

Filtered list of ranking tables for code generation

フィルター リストに加え、テキストをフィルターに入力することで、変数名内のテキストでフィルター処理を行うことができます。たとえば、次の図に示すように、[出力] フィルターに「peak」と入力した場合、フィルター処理されたリストにはピーク振幅とピーク周波数についてのスペクトル特徴が含まれるようになります。テキストのマッチングでは大文字と小文字が区別されません。

Output filter set for all signal names that include the word peak

Filtered list of all features and spectra with names containing the word peak

すべてのフィルターをクリアするには、[フィルターのリセット] をクリックします。

Reset Filters button

各フィルター表示には、使用できる出力のサブセットが表示されます。すべての選択項目をまとめて表示するには、[選択した項目で並べ替え] をクリックします。

Sort by Selection button

フィルター表示で選択した項目は、選択リストの先頭にまとめて表示されます。

List of all possible outputs with selections grouped at the top

これらの項目のコードを生成するには、[関数の生成] をクリックします。このアクションは、以下の情報を含むプリアンブルをもった関数を生成します。

%
% This function computes signals:
%  Vibration_tsa/Data
%
% This function computes spectra:
%  Vibration_ps/SpectrumData
%
% This function computes features:
%  Vibration_sigstats/Skewness
%  Vibration_tsa_rotmac/RMS
%  Vibration_ps_spec/PeakAmp1
%
% This function ranks computed feautres using algorithms:
%  Bhattacharyya
%

並べ替えられたフィルター ビューで Vibration_tsa/Data は選択されていませんが、選択されている他の信号で必要とされるため、関数はこの信号を計算します。

生成コードの保存および使用

アプリでは、diagnosticFeatures という既定の名前が関数に割り当てられます。関数をこの名前のファイルとして保存することも、関数とファイルの名前を変更することもできます。関数を実行するには、関数のコード行の構文に従います。たとえば、次のような関数行であるとします。

function [featureTable,outputTable] = diagnosticFeatures(inputData)
この関数の 2 つの出力は、特徴と状態変数が含まれる特徴テーブルと、アンサンブルのすべての変数が含まれる出力テーブルです。2 番目の出力引数はオプションです。この関数は、アプリにインポートした元のデータと同じ入力変数を持つ任意の入力データに対して使用できます。たとえば、データが fullDataTable に格納されているとしたら、特徴テーブル features のみが必要です。使用:
features = diagnosticFeatures(fullDataTable)

個々の table を元々インポートしており、元のデータに対してコードを検証する場合は、table を連結する必要があります。たとえば、table t1t2、および t3 (それぞれの table は異なるアンサンブル メンバーを表す) をインポートした場合、まずこれらの table を単一の入力 table に連結してから生成された関数を実行します。

inputData = {t1,t2,t3};
features = diagnosticFeatures(inputData);

コード生成と元のデータを使用したコード検証の例については、診断特徴デザイナーでの MATLAB 関数の生成を参照してください。コードを新しいデータセットに適用する例については、拡大されたデータセットへの生成された MATLAB 関数の適用を参照してください。生成されたコード自体の説明と、どのように計算が実行されるかについては、アプリで生成された MATLAB コードの構造を参照してください。

生成コードのオプションの変更

特徴を開発する際には、並列計算を使用するかどうかのオプションと、(インポート処理の間は) アンサンブル データストアを扱う方法のオプションがあります。場合によっては、アプリで特徴を計算するために使用したオプションとは異なるオプションを、生成コードで使用することがあります。たとえば、元々並列計算を使用していなかったものの、コードでは並列計算オプションを呼び出す場合があります。元々、アンサンブル データストアをインポートしたときにローカル メモリに計算結果を保存するよう選択していた場合、コードを実行する際には、コードによって結果を代わりに外部ファイルに直接追加することがあります。コード生成のこうしたオプションを、[コード生成] タブで設定することができます。

List of all possible outputs with selections grouped at the top

[オプション] セクションでは、以下のオプションが以下の条件で使用できます。

  • ファイル アンサンブルへのデータの追加 — データ ソースが fileEnsembleDatastore または simulationEnsembleDatastore である場合に使用可能

  • 並列計算の使用 — Parallel Computing Toolbox™ のライセンスがある場合に使用可能

参考

関連するトピック