メインコンテンツ

extract

時間領域、周波数領域、または時間-周波数領域の特徴の抽出

R2021b 以降

    説明

    features = extract(sFE,x) は、入力 x から抽出された特徴を含む行列またはテーブルを返します。出力は、特徴抽出器オブジェクト sFE の設定により異なります。

    [features,info] = extract(sFE,x) は、特定の特徴を出力特徴行列 features 内の列位置にマッピングする構造体 info を返します。この構文は、特徴抽出器オブジェクトの FeatureFormat プロパティを "matrix" に設定した場合にのみ有効です。

    [features,info,framelimits] = extract(sFE,x) は、i 番目の行に i 番目のフレームの始点と終点を格納した行列 framelimits を返します。この構文は、特徴抽出器オブジェクトの FeatureFormat プロパティを "matrix" に設定した場合にのみ有効です。

    [___] = extract(sFE,sds) は、データストア オブジェクト sds から抽出した特徴が格納された、行列の cell 配列、または table を返します。出力は、特徴抽出器オブジェクト sFE の設定により異なります。 (R2024b 以降)

    [___] = extract(sFE,sds,UseParallel=tf) を使用すると、計算が自動的に並列実行されるため、コードを高速化できます。この機能を使用するには、Parallel Computing Toolbox™ のライセンスを所有していなければならず、構文で UseParallel=true を指定しなければなりません。 (R2024b 以降)

    すべて折りたたむ

    31 日間にわたってボストンのローガン空港で 1 時間間隔で測定された摂氏単位の温度を読み込みます。データをプロットします。

    load bostemp
    days = (1:31*24)/24;
    plot(days, tempC)
    axis tight
    ylabel("Temperature (\circC)")
    xlabel("Time elapsed from Jan 1, 2011 (days)")
    title("Logan Airport Dry Bulb Temperature (source: NOAA)")

    Figure contains an axes object. The axes object with title Logan Airport Dry Bulb Temperature (source: NOAA), xlabel Time elapsed from Jan 1, 2011 (days), ylabel Temperature ( degree C) contains an object of type line.

    signalTimeFeatureExtractor オブジェクトを作成して PeakValue 特徴を有効にします。1 日あたりの最大絶対温度値を取得するには、フレーム サイズを 24 サンプルに、フレームのオーバーラップを 0 サンプルに設定します。

    fl = 24;
    sFE = signalTimeFeatureExtractor(FrameSize=fl, ...
        FrameOverlapLength=0,PeakValue=true);

    オブジェクトに対して関数 extract を呼び出し、データ セット内の日次最大絶対温度を抽出します。

    peaktemps = extract(sFE,tempC)
    peaktemps = 31×1
    
        2.8000
        6.1000
        8.3000
        3.3000
        2.8000
        4.4000
        4.4000
        6.1000
       10.6000
       11.7000
        7.8000
        8.9000
        9.4000
        5.6000
        7.8000
          ⋮
    
    

    抽出されたピーク値を確認します。信号を 1 日あたりの温度値を表す 24 サンプルのセグメントに分割し、各セグメントの最大絶対値を計算します。結果のベクトルを peaktemps と比較します。

    y = framesig(tempC,fl);
    [mx,idx] = max(abs(y));
    
    tf = isequal(peaktemps,mx')
    tf = logical
       1
    
    

    31 日間にわたってボストンのローガン空港で 1 時間間隔で測定された摂氏単位の温度を読み込みます。データをプロットします。

    load bostemp
    days = (1:31*24)/24;
    plot(days,tempC)
    axis tight
    ylabel("Temperature (\circC)")
    xlabel("Time elapsed from Jan 1, 2011 (days)")
    title("Logan Airport Dry Bulb Temperature (source: NOAA)")

    Figure contains an axes object. The axes object with title Logan Airport Dry Bulb Temperature (source: NOAA), xlabel Time elapsed from Jan 1, 2011 (days), ylabel Temperature ( degree C) contains an object of type line.

    温度測定値の配列を timetable に変換します。最初の温度測定は 2011 年 1 月 1 日に行われました。

    tt = array2timetable(tempC, ...
        TimeStep=hours(1),StartTime=datetime(2011,01,01));

    signalTimeFeatureExtractor オブジェクトを作成し、Mean 特徴を有効にして週間平均温度を取得します。抽出器のサンプル レートとフレーム サイズ (1 週間 = 168 時間) を指定します。抽出した値の出力形式を table に設定します。

    fs = 1/3600;
    sFE = signalTimeFeatureExtractor(SampleRate=fs, ...
        FrameSize=168,Mean=true,FeatureFormat="table");

    関数 extract を呼び出して、データ セットから週間平均温度を抽出します。この関数は、過去 3 日間 (72 時間) に取得された測定値は、1 週間に満たないため含めません。

    meantemps = extract(sFE,tt)
    meantemps=4×3 table
        FrameStartTime    FrameEndTime     Mean  
        ______________    ____________    _______
    
               1              168         -1.8357
             169              336         -4.3095
             337              504          1.7976
             505              672          2.0911
    
    

    1 kHz で 2 秒間サンプリングされた 2 次チャープを考えます。チャープの初期周波数は 100 Hz で、t = 1 秒のとき 200 Hz まで増大します。そのスペクトログラムを計算して表示します。

    fs = 1e3;
    t = 0:1/fs:2;
    y = chirp(t,100,1,200,"quadratic");
    pspectrum(y,fs,"spectrogram")

    Figure contains an axes object. The axes object with title Fres = 10.2261 Hz, Tres = 251 ms, xlabel Time (s), ylabel Frequency (Hz) contains an object of type image.

    signalFrequencyFeatureExtractor オブジェクトを作成して、信号から周波数の平均値と中央値を取得します。サンプル レートを指定します。

    sFE = signalFrequencyFeatureExtractor(SampleRate=fs, ...
        MeanFrequency=true,MedianFrequency=true);

    特徴を抽出します。info は、抽出された特徴ごとの features に含まれる列インデックスを返します。

    [features,info] = extract(sFE,y)
    features = 1×2
    
      226.0160  199.7034
    
    
    info = struct with fields:
          MeanFrequency: 1
        MedianFrequency: 2
    
    

    特徴抽出器オブジェクトの FrameSize および FrameRate プロパティを設定して、信号を 2 つのフレームに分割します。最初のフレームが初期周波数 100 Hz で振動するチャープを表し、2 番目のフレームが 200 Hz で振動するチャープを表します。各フレームの周波数の平均値と中央値を抽出し、フレームの範囲を出力に含めます。

    sFE.FrameSize = round(length(y)/2);
    sFE.FrameRate = 1000;
    [features2,info2,frameLimits] = extract(sFE,y)
    features2 = 2×2
    
      131.4921  124.9820
      331.2664  324.6992
    
    
    info2 = struct with fields:
          MeanFrequency: 1
        MedianFrequency: 2
    
    
    frameLimits = 2×2
    
               1        1001
            1001        2001
    
    

    入力引数

    すべて折りたたむ

    特徴抽出器オブジェクト。signalFrequencyFeatureExtractor オブジェクト、signalTimeFeatureExtractor オブジェクト、または signalTimeFrequencyFeatureExtractor オブジェクトとして指定します。

    入力信号。ベクトル、行列、または timetable として指定します。

    x が timetable の場合、特徴抽出器オブジェクト sFESampleRate プロパティを指定しなければなりません。timetable x のサンプル レートは、sFE で指定されたサンプル レートと等しくなければなりません。

    データ型: single | double

    R2024b 以降

    入力信号のデータストア。signalDatastore オブジェクトまたは audioDatastore (Audio Toolbox) オブジェクトとして指定します。extract 関数は、sds の各メンバーの特徴を計算します。

    extract は、まず、sds に対する最初の読み取り操作で得られたデータが、行列、timetable、行列を含む cell 配列、または timetable を含む cell 配列であることを確認します。その後に続く sds のメンバーは、すべて最初のメンバーと同じデータ形式をもつものと見なされます。

    メモ

    sds のメンバーのデータ形式が不均一である場合、extract を使用すると予期せぬ結果やエラーを引き起こす可能性があります。ベスト プラクティスは、データストア オブジェクト sds が読み取りごとに同じ形式のデータを確実に指すようにすることです。

    R2024b 以降

    特徴抽出を並列で実行するオプション。false または true として指定します。

    既定では、extract は特徴抽出を逐次的に実行します。tftrue に設定した場合、extract は、次の場合にのみ、ワーカーの並列プールを使用して特徴抽出処理を実行します。

    • Parallel Computing Toolbox がインストールされている。

    • [並列設定] でプールの自動作成が有効になっているか、開いている並列プールが存在する。[並列設定] を制御する方法の詳細については、並列設定の指定 (Parallel Computing Toolbox)を参照してください。

    それ以外の場合、extract は特徴抽出を実行せずにエラーを出力します。

    データ型: logical

    出力引数

    すべて折りたたむ

    抽出された特徴。3 次元配列、table、または cell 配列として返されます。特徴 features の出力の形式は、特徴抽出器オブジェクト sFEFeatureFormat プロパティの値、さらには信号 x から特徴を抽出しているのか、データストア オブジェクト sds から特徴を抽出しているのかによって異なります。

    • 入力特徴抽出器オブジェクトの FeatureFormat プロパティを "matrix" に設定し、入力信号 x を指定した場合、extract は、L×M×N の配列として features を返します。

      • L はフレーム数。

      • M はフレームごとの抽出された特徴数。

      • N はチャネル数。

    • 入力特徴抽出器オブジェクトの FeatureFormat プロパティを "table" に設定し、入力信号 x を指定した場合、extract は、抽出された特徴を table で返します。このとき、最初の 2 つの table 変数にフレームの範囲がリストされます。

    • k 個のメンバーをもつ入力データストア オブジェクト sds を指定した場合、この関数は k 行 1 列の cell 配列を返します。配列の k 番目の要素には、sdsk 番目の信号から抽出された特徴が、指定された形式 FeatureFormat で格納されます。 (R2024b 以降)

      • FeatureFormat"matrix" に設定した場合、extract は cell 配列の各要素を行列として返します。

      • FeatureFormat"table" に設定した場合、extract は cell 配列の各要素を table として返します。

    特徴情報。構造体として返されます。この関数は、各特徴を出力行列 features 内の列位置にマッピングします。この引数は、入力特徴抽出器オブジェクトの FeatureFormat プロパティを "matrix" に設定した場合にのみ適用されます。

    k 個のメンバーをもつ入力データストア オブジェクト sds を指定した場合、この関数は k 行 1 列の cell 配列を返します。ここで、各要素は、sds からの信号に対応する特徴情報の構造体です。 (R2024b 以降)

    フレームの範囲。行列として返されます。framelimits 内の i 番目の行には、i 番目のフレームの始点と終点が格納されています。この引数は、入力特徴抽出器オブジェクトの FeatureFormat プロパティを "matrix" に設定した場合にのみ適用されます。

    k 個のメンバーをもつ入力データストア オブジェクト sds を指定した場合、この関数は k 行 1 列の cell 配列を返します。ここで、各要素は、sds からの信号に対応するフレーム範囲が格納された行列です。 (R2024b 以降)

    バージョン履歴

    R2021b で導入

    すべて展開する