Main Content

extract

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

    説明

    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" に設定した場合にのみ有効です。

    すべて折りたたむ

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

    load bostemp
    days = (1:31*24)/24;
    plot(days, tempC)
    axis tight
    ylabel('Temp (\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) contains an object of type line.

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

    sFE = signalTimeFeatureExtractor(FrameSize=24,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
          ⋮
    
    

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

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

    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 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;
    [features,info,framelimits] = extract(sFE,y)
    features = 2×2
    
      131.4921  124.9820
      331.2664  324.6992
    
    
    info = struct with fields:
          MeanFrequency: 1
        MedianFrequency: 2
    
    
    framelimits = 2×2
    
               1        1001
            1001        2001
    
    

    入力引数

    すべて折りたたむ

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

    ベクトルまたは行列として指定される入力信号。

    データ型: single | double

    出力引数

    すべて折りたたむ

    抽出された特徴。L×M×N の配列として返されます。

    • L — フレーム数

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

    • N — チャネル数

    入力特徴抽出器オブジェクトの FeatureFormat プロパティを "table" に設定した場合、この関数は最初の 2 つの table 変数にリストされたフレームの範囲を含む表形式で、抽出された特徴を返します。入力特徴抽出器オブジェクトの FeatureFormat プロパティを "matrix" に設定した場合、この関数は抽出された特徴を行列形式で返します。

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

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

    バージョン履歴

    R2021b で導入