signalTimeFrequencyFeatureExtractor
Description
Use a signalTimeFrequencyFeatureExtractor
object to extract time-frequency
features from a signal. You can use the extracted features to train a machine
learning model or a deep learning network.
Creation
Syntax
Description
creates a sFE
= signalTimeFrequencyFeatureExtractorsignalTimeFrequencyFeatureExtractor
object with default property values.
sets property values of the sFE
= signalTimeFrequencyFeatureExtractor(PropertyName=Value
)signalTimeFrequencyFeatureExtractor
object. For
example,
sFE = signalTimeFrequencyFeatureExtractor( ...
FrameSize=30,SampleRate=10,SpectralKurtosis=true)
signalTimeFrequencyFeatureExtractor
object that partitions a signal into frames of 30 samples
each and a rate of 10 Hz to extract the spectral kurtosis feature from the spectrogram of
each frame.Properties
Object Functions
extract | Extract time-domain, frequency-domain, or time-frequency-domain features |
generateMATLABFunction | Create MATLAB function compatible with C/C++ code generation |
getExtractorParameters | Get current parameter values of feature extractor object |
getScalarizationMethods | Get scalarization methods for domain-specific signal features |
setExtractorParameters | Set nondefault parameter values for feature extractor object |
setScalarizationMethods | Set scalarization methods for domain-specific signal features |
Examples
More About
Algorithms
Assume an input signal x
sampled at a rate Fs
, from
which to extract time-frequency features. When you specify signal framing properties
(FrameSize
, FrameRate
or FrameOverlapLength
, and IncompleteFrameRule
), the feature extractor sets up the signal partitioning
operation for x
to extract features for each frame. This table shows the
equivalent syntaxes that signalTimeFrequencyFeatureExtractor
uses to partition the signal
x
into frames of size fl
, frame rate
fr
or frame overlap length ol
, and incomplete frame
rule ifr
.
Frame Specifications | Feature Extractor Object Specification | Signal Framing Operation Equivalency |
---|---|---|
sFE = signalTimeFrequencyFeatureExtractor( ... FrameSize=fl,FrameRate=fr, ... IncompleteFrameRule=ifr); |
xFrames = framesig(x,fl, ... OverlapLength=fl-fr, ... IncompleteFrameRule=ifr); | |
sFE = signalTimeFrequencyFeatureExtractor( ... FrameSize=fl,FrameOverlapLength=ol, ... IncompleteFrameRule=ifr); |
xFrames = framesig(x,fl, ... OverlapLength=ol, ... IncompleteFrameRule=ifr); |
If you do not specify signal framing properties, signalTimeFrequencyFeatureExtractor
considers x
as a single-framed signal.
Given the single-framed input signal x
and sample rate
Fs
, this table lists the equivalent syntaxes for extracting features
using the signalTimeFrequencyFeatureExtractor
object and the individual feature extractor
functions.
Features | Feature Extractor Object | Individual Feature Extractors |
---|---|---|
|
sFE = signalTimeFrequencyFeatureExtractor( ... SampleRate=Fs, ... Transform="spectrogram", ... SpectralKurtosis=true, ... SpectralSkewness=true, ... SpectralCrest=true, ... SpectralFlatness=true, ... SpectralEntropy=true, ... TFRidges=true, ... InstantaneousBandwidth=true, ... InstantaneousFrequency=true); features = extract(sFE,x); |
[S,F,T] = pspectrum( ... x,Fs,"spectrogram"); features = [ ... spectralKurtosis(S,F)' ... spectralSkewness(S,F)' ... spectralCrest(S,F)' ... spectralFlatness(S,F)' ... spectralEntropy(S,F)' ... tfridge(S,F)' ... instbw(S,F,T)' ... instfreq(S,F,T)' ... ]; |
|
sFE = signalTimeFrequencyFeatureExtractor( ... SampleRate=Fs, ... Transform="synchrosqueezedspectrogram", ... SpectralKurtosis=true, ... SpectralSkewness=true, ... SpectralCrest=true, ... SpectralFlatness=true, ... SpectralEntropy=true, ... TFRidges=true, ... InstantaneousBandwidth=true, ... InstantaneousFrequency=true); features = extract(sFE,x); |
[S,F,T] = fsst(x,Fs); S = abs(S).^2; F = F/(2*pi); features = [ ... spectralKurtosis(S,F)' ... spectralSkewness(S,F)' ... spectralCrest(S,F)' ... spectralFlatness(S,F)' ... spectralEntropy(S,F)' ... tfridge(S,F)' ... instbw(S,F,T)' ... instfreq(S,F,T)' ... ]; |
|
sFE = signalTimeFrequencyFeatureExtractor( ... SampleRate=Fs, ... Transform="synchrosqueezedscalogram", ... SpectralKurtosis=true, ... SpectralSkewness=true, ... SpectralCrest=true, ... SpectralFlatness=true, ... SpectralEntropy=true, ... TFRidges=true, ... InstantaneousBandwidth=true, ... InstantaneousFrequency=true); features = extract(sFE,x); |
[S,F] = wsst(x,Fs); S = abs(S).^2; T = (0:1:size(S,2)-1)/Fs; features = [ ... spectralKurtosis(S,F)' ... spectralSkewness(S,F)' ... spectralCrest(S,F)' ... spectralFlatness(S,F)' ... spectralEntropy(S,F)' ... tfridge(S,F)' ... instbw(S,F,T)' ... instfreq(S,F,T)' ... ]; |
|
sFE = signalTimeFrequencyFeatureExtractor( ... SampleRate=Fs, ... Transform="emd", ... InstantaneousFrequency=true, ... MeanEnvelopeEnergy=true, ... InstantaneousEnergy=true); features = extract(sFE,x); |
[imf,~,d] = emd(x,MaxNumIMF=10); [~,~,~,F,E] = hht(imf,Fs); m = d.MeanEnvelopeEnergy'; features = [ ... F(:)' ... m zeros(1,10-numel(m)) ... E(:)' ... ]; |
VMD features: |
sFE = signalTimeFrequencyFeatureExtractor( ... SampleRate=Fs,Transform="vmd", ... InstantaneousFrequency=true, ... InstantaneousEnergy=true); features = extract(sFE,x); |
[~,~,~,F,E] = hht(vmd(x),Fs); features = [ ... F(:)' ... E(:)' ... ]; |
|
sFE = signalTimeFrequencyFeatureExtractor( ... SampleRate=Fs, ... Transform="wavelet", ... InstantaneousFrequency=true, ... InstantaneousEnergy=true, ... WaveletEntropy=true); features = extract(sFE,x); |
mra = modwtmra(modwt(x)); imf = permute(mra,[2 1 3]); [~,~,~,F,E] = hht(imf,Fs); features = [ ... F(:)' ... E(:)' ... wentropy(modwt(x))' ... ]; |
|
sFE = signalTimeFrequencyFeatureExtractor( ... SampleRate=Fs, ... Transform="waveletpacket", ... InstantaneousFrequency=true, ... InstantaneousEnergy=true, ... WaveletEntropy=true); features = extract(sFE,x); |
d = modwptdetails(x); imf = permute(d,[2 1 3]); [~,~,~,F,E] = hht(imf,Fs); features = [ ... F(:)' ... E(:)' ... wentropy(modwpt(x))' ... ]; |
|
sFE = signalTimeFrequencyFeatureExtractor( ... SampleRate=Fs, ... Transform="scalogram", ... TimeSpectrum=true, ... ScaleSpectrum=true); features = extract(sFE,x); |
fb = cwtfilterbank( ... SignalLength=numel(x)); features = [ ... timeSpectrum(fb,wt(fb,x))' ... scaleSpectrum(fb,wt(fb,x)) ... ]; |
Note
Because
signalTimeFrequencyFeatureExtractor
reuses intermediary representations, the features thatsignalTimeFrequencyFeatureExtractor
outputs might not correspond with the default configuration of features output by the corresponding individual feature extraction functions.To obtain the equivalent syntax for the feature extraction setup based on the properties specified when you create the
signalTimeFrequencyFeatureExtractor
object, usegenerateMATLABFunction
.
References
[1] Moody, G.B., and R.G. Mark. “The Impact of the MIT-BIH Arrhythmia Database.” IEEE Engineering in Medicine and Biology Magazine 20, no. 3 (June 2001): 45–50. https://doi.org/10.1109/51.932724.