Generated banner for Matlab Extract Signal Features
Generated logo for Matlab Extract Signal Features

Matlab Extract Signal Features

MathWorksOfficialCreated by MathWorks

  • Skill
  • Tool integration
  • Science and research
  • BSD-2-Clause
  • No issues found

From the author

Extract features from 1D signals using signalTimeFeatureExtractor, signalFrequencyFeatureExtractor, and signalTimeFrequencyFeatureExtractor. Use when computing time-domain features (amplitude, energy, shape factors), frequency-domain features (spectral location, power, bandwidth, PSD), or time-frequency features (spectral shape, instantaneous, ridges, wavelet, EMD-derived) on a per-frame basis. Use when the user asks to "extract features", "compute spectral features", "build a feature table for a classifier", "get per-frame statistics", "run feature extraction on this signal", or describes a vibration / biosignal / radar / sensor signal needing features for downstream ML or analysis. Includes optional GPU acceleration via canUseGPU and gpuArray. Does not cover filter design, audio-specific feature extraction (use audioFeatureExtractor in Audio Toolbox instead), batch dataset orchestration, or 2D / image features.
— the description by MathWorks

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

This skill provides a structured approach to extracting per-frame features from 1D signals using the Signal Processing Toolbox. It guides users in selecting the appropriate extractor—time, frequency, or time-frequency—based on signal characteristics, configuring parameters, and handling output formats. The skill emphasizes a systematic workflow: performing preliminary analysis to determine signal stationarity, ranking candidate features across domains to improve downstream machine learning performance, and utilizing optional GPU acceleration for efficient processing. It includes patterns for common tasks like feature table generation, handling vector-valued features, and managing batch processing via datastores.

What it does

  • Computes time-domain features like RMS, crest factor, and peak value.
  • Extracts frequency-domain features including spectral location, power, and bandwidth.
  • Calculates time-frequency features such as spectral shape, instantaneous frequency, and wavelet-based metrics.
  • Supports GPU-accelerated feature extraction for compatible hardware.
  • Generates structured feature tables suitable for training machine learning classifiers or regressors.
  • Provides patterns for per-frame statistics and multi-domain feature concatenation.

When to use it

  • When you need to prepare 1D signal data for machine learning or statistical analysis.
  • When you require per-frame feature statistics from vibration, biosignal, radar, or sensor data.
  • When you need to combine features from multiple domains (time, frequency, time-frequency) into a single feature table.
  • When you want to optimize feature extraction performance using GPU acceleration.

Advantages

  • Standardizes feature extraction workflows using official toolbox objects.
  • Promotes better model performance by encouraging multi-domain feature selection.
  • Provides clear guidance on handling complex output shapes like cell arrays and matrices.
  • Includes robust patterns for GPU integration and parallel processing.
  • Reduces errors by providing specific references for feature flags and parameter names.

Usage examples

“Extract RMS and crest factor from a 1D signal x with sampling rate fs.”
The agent configures a signalTimeFeatureExtractor with RMS and CrestFactor flags enabled, then runs the extract function to return a table of per-frame time-domain features.
“Compute spectral features for a stationary signal for a classifier.”
The agent uses signalFrequencyFeatureExtractor to calculate metrics like BandPower and OccupiedBandwidth, ensuring the output is formatted as a table for downstream model training.
“How do I run feature extraction on a GPU?”
The agent provides a code pattern using the canUseGPU guard and gpuArray to safely move the signal to the GPU before calling the extract function.
“I need to combine time and frequency features into one table.”
The agent explains how to configure both extractors with identical frame settings and provides the logic to concatenate the resulting tables while aligning the frame indices.

Install

  1. Download the skill as a ZIP:

    https://autogineer.com/agent-skills/matlab/matlab-extract-signal-features/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip matlab-extract-signal-features.zip -d .agents/skills

Documentation by MathWorks

Extract Signal Features

Per-frame feature extraction for 1D signals using the three Signal Processing Toolbox extractor objects. Picks the right extractor, configures it with real parameters only, and adds a GPU code path when one is available.

When to Use

  • The user has a 1D signal and wants per-frame features for analysis or ML.

  • The user names specific features from any of the three extractor domains (time, frequency, time-frequency).

  • The user asks for a feature table or feature matrix to feed fitcecoc, fitcnet, or any classifier / regressor.

  • The user asks for per-frame statistics over a windowed signal.

When NOT to Use

  • Filter design or signal preprocessing — out of scope. Filtering before feature extraction is a separate concern.

  • Audio-specific features (MFCC, mel-spectrogram, pitch, chroma, gammatone). Audio Toolbox's audioFeatureExtractor covers those — out of scope here.

  • Batch / dataset orchestration — signalDatastore, labeledSignalSet, tall arrays. The per-file extraction is in scope; building the pipeline around it is not.

  • 2D, image, or multivariate features — out of scope by signal-type boundary.

Workflow

  1. (Recommended) Run a quick preliminary analysis. Check spectral stationarity — does the frequency content drift over time? — on a representative subset using Signal Processing Toolbox alone: a pspectrum(x, fs, "spectrogram") look plus a per-frame MeanFrequency drift ratio (no Econometrics Toolbox needed; adftest/kpsstest are an optional supplement only). Use the verdict to pick the primary extractor — non-stationary signals favour signalTimeFrequencyFeatureExtractor; spectrally stationary signals lean on the frequency extractor. See references/preliminary-analysis.md. Then write down a ranked candidate feature list, spanning more than one domain for a classifier/regressor feature table, with one-line justifications tying each feature to an observed signal characteristic, before configuring the extractors. The verdict picks the primary extractor, not the only one — a set that collapses onto a single extractor is the most common cause of a weak downstream classifier. Example: "MeanFrequency — stationary harmonic, energy localized at known frequencies." See references/feature-ranking.md.

  2. Pick the extractor based on what the user wants. See "Choosing the right extractor" below.

  3. Configure with SampleRate, FrameSize, and either FrameRate or FrameOverlapLength (not both). Enable feature flags as name-value pairs.

  4. (Optional) Set per-feature or per-transform parameters via setExtractorParameters for features/transforms that have them. Only signalFrequencyFeatureExtractor and signalTimeFrequencyFeatureExtractor support this method. The second argument can be a feature name OR a transform name. Before writing any setExtractorParameters call, open the matching reference file and copy the parameter name verbatim. Parameter names are not what you'd guess. The references are the source of truth.

  5. (Optional) Move to GPU using the guard pattern in references/gpu-patterns.md.

  6. Run extract(sFE, x) on the signal. Output shape depends on FeatureFormat (matrix or table). src may also be a signalDatastore / audioDatastore, in which case extract returns one result per file (a cell array) and accepts UseParallel=true to process files on a parallel pool — use it whenever extracting over many files. For the input contract, the per-extractor output shape, datastore/parallel extraction, and how to combine outputs across extractors, see references/extract-function.md.

  7. Decide output shape. Do NOT aggregate per-frame results by default. The per-frame table is a valid final output. Aggregate (mean/std across frames) only if the user's downstream model requires one fixed-length vector per signal (e.g., fitcecoc, fitcsvm, tree ensembles). If the model consumes sequences (LSTM, 1-D CNN, transformer), keep the per-frame table as-is. If the user has variable-length signals and the downstream task is unclear, ask rather than assuming aggregation. See references/post-extraction-patterns.md.

Stop and check the matching per-extractor reference before:

  • Enabling any feature on signalTimeFrequencyFeatureExtractor — each Transform supports a different subset.

  • Calling setExtractorParameters — parameter names differ per feature and per transform.

  • Using any feature flag, parameter, or Transform value not already shown in this file's patterns. If it isn't in the per-extractor reference, it doesn't exist on the object.

Choosing the right extractor

User wantsUse
Time-domain features (amplitude, energy, shape factors)signalTimeFeatureExtractor
Frequency-domain features (spectral location, power, bandwidth, PSD)signalFrequencyFeatureExtractor
Time-frequency features (spectral shape, instantaneous, ridges, wavelet, EMD-derived)signalTimeFrequencyFeatureExtractor
Multiple of the aboveUse multiple extractors; concatenate the resulting tables

For the time-frequency extractor, the Transform property gates which features are valid. See the compatibility matrix in references/signal-time-frequency-feature-extractor.md.

Key Functions

FunctionPurposeToolboxAvailable From
signalTimeFeatureExtractorTime-domain feature extractor objectSignal Processing ToolboxR2021a
signalFrequencyFeatureExtractorFrequency-domain feature extractor objectSignal Processing ToolboxR2021b
signalTimeFrequencyFeatureExtractorTime-frequency feature extractor objectSignal Processing ToolboxR2024a
extractRun a configured extractor on a signalSignal Processing ToolboxR2021a
getExtractorParameters / setExtractorParametersRead/write per-feature or per-transform parameters (frequency and time-frequency only)Signal Processing ToolboxR2021b
timeFrequencyFeatureTransformOptionsCreate transform options object for signalTimeFrequencyFeatureExtractor (replaces string Transform=)Signal Processing ToolboxR2026a
generateMATLABFunctionEmit a codegen-compatible MATLAB function from an extractorSignal Processing ToolboxR2021a
canUseGPU, gatherGPU availability check and data transfer (core MATLAB, no toolbox)MATLABR2020b
gpuArrayMove array to GPU memoryParallel Computing ToolboxR2012a

gpuArray input to extract is available per extractor from: signalTimeFeatureExtractor R2023a, signalFrequencyFeatureExtractor R2023a, signalTimeFrequencyFeatureExtractor R2024b (one release after the object itself). Requires Parallel Computing Toolbox. See references/gpu-patterns.md for per-transform limitations.

generateMATLABFunction exists for codegen workflows. Mention it when relevant; full codegen guidance is out of scope for this skill.

Patterns

Time-domain features per frame
function featureTable = extractTimeFeaturesExample(x, fs)
%extractTimeFeaturesExample Per-frame time-domain features as a table.
    arguments
        x  (:, 1) double {mustBeFinite}
        fs (1, 1) double {mustBePositive}
    end

    sFE = signalTimeFeatureExtractor( ...
        SampleRate=fs, ...
        FrameSize=round(0.1 * fs), ...
        FrameOverlapLength=round(0.05 * fs), ...
        RMS=true, ...
        CrestFactor=true, ...
        PeakValue=true, ...
        FeatureFormat="table");

    featureTable = extract(sFE, x);
end

For valid time-feature flags, see references/signal-time-feature-extractor.md.

Frequency-domain features with per-feature parameters
function featureTable = extractBandPowerExample(x, fs)
%extractBandPowerExample Band power and occupied bandwidth per frame.
    arguments
        x  (:, 1) double {mustBeFinite}
        fs (1, 1) double {mustBePositive}
    end

    sFE = signalFrequencyFeatureExtractor( ...
        SampleRate=fs, ...
        FrameSize=round(0.1 * fs), ...
        FrameOverlapLength=round(0.05 * fs), ...
        BandPower=true, ...
        OccupiedBandwidth=true, ...
        FeatureFormat="table");

    setExtractorParameters(sFE, "OccupiedBandwidth", Percentage=95);

    featureTable = extract(sFE, x);
end

For per-feature parameter tables (including the trap that PowerBandwidth takes RelativeAmplitude not Power), see references/signal-frequency-feature-extractor.md.

Time-frequency features (spectrogram transform)
function featureTable = extractTFFeaturesExample(x, fs)
%extractTFFeaturesExample Spectral entropy and instantaneous frequency per frame.
    arguments
        x  (:, 1) double {mustBeFinite}
        fs (1, 1) double {mustBePositive}
    end

    % R2026a+ (preferred): use timeFrequencyFeatureTransformOptions.
    % Constructor is name-value only, keyed by FEATURE name -> transform.
    % There is no positional-string form: timeFrequencyFeatureTransformOptions("spectrogram") errors.
    tfOpts = timeFrequencyFeatureTransformOptions( ...
        SpectralEntropy="spectrogram", ...
        InstantaneousFrequency="spectrogram");
    sFE = signalTimeFrequencyFeatureExtractor( ...
        Transform=tfOpts, ...
        SampleRate=fs, ...
        FrameSize=256, ...
        FrameOverlapLength=128, ...
        SpectralEntropy=true, ...
        InstantaneousFrequency=true, ...
        FeatureFormat="table");

    % R2024a–R2025b: use string directly (deprecated from R2026a)
    % sFE = signalTimeFrequencyFeatureExtractor( ...
    %     Transform="spectrogram", ...
    %     SampleRate=fs, ...
    %     FrameSize=256, ...
    %     FrameOverlapLength=128, ...
    %     SpectralEntropy=true, ...
    %     InstantaneousFrequency=true, ...
    %     FeatureFormat="table");

    setExtractorParameters(sFE, "spectrogram", Leakage=0.9, OverlapPercent=85);

    featureTable = extract(sFE, x);
end

Each Transform supports a different subset of features, and per-feature parameters depend on (transform, feature). Always check references/signal-time-frequency-feature-extractor.md before enabling a feature or calling setExtractorParameters.

Multi-transform routing (R2026a+): A single extractor can route different features to different transforms — you do NOT need separate extractors. Use timeFrequencyFeatureTransformOptions with per-feature properties (e.g., SpectralKurtosis="synchrosqueezedspectrogram", SpectralEntropy="spectrogram"). See the full example and valid-transform table in references/signal-time-frequency-feature-extractor.md.

GPU-accelerated extraction

Toolbox note: The GPU path (gpuArray) and the UseParallel=true datastore path both require Parallel Computing Toolbox. It is not required for core feature extraction — the skill runs fully on CPU without it, because the canUseGPU() guard skips the GPU branch and UseParallel defaults to false. Enable these paths only when Parallel Computing Toolbox is installed.

function featureTable = extractWithGPU(x, fs)
%extractWithGPU Run feature extraction on GPU when available, CPU otherwise.
    arguments
        x  (:, 1) double {mustBeFinite}
        fs (1, 1) double {mustBePositive}
    end

    sFE = signalTimeFeatureExtractor( ...
        SampleRate=fs, ...
        FrameSize=round(0.1 * fs), ...
        FrameOverlapLength=round(0.05 * fs), ...
        RMS=true, ...
        StandardDeviation=true, ...
        FeatureFormat="table");

    if canUseGPU()
        x = gpuArray(x);
    end
    featureTable = extract(sFE, x);
end

The feature table may contain gpuArray columns. Downstream code (ML training, plotting) often accepts these directly. Call gather only when a specific consumer requires it (e.g., save to .mat, writetable to CSV).

See references/gpu-patterns.md for the rationale behind the canUseGPU guard and why unconditional gpuArray calls are wrong. If the GPU path unexpectedly falls back to CPU or gpuArray errors, the matlab-setup-gpu skill diagnoses GPU availability problems (unlicensed PCT, outdated driver, compute mode).

Post-extraction: aggregation and reproducibility

Do not aggregate unless the user's workflow explicitly requires one feature vector per signal. The per-frame table is the default output. Two optional patterns that run after extract:

  • Per-frame → per-signal aggregation — only when the downstream model requires a fixed-length vector per example (tree ensembles, SVM, etc.). Collapse with varfun(@mean, ...) / varfun(@std, ...), dropping FrameStartTime / FrameEndTime first. Skip aggregation for sequence models (LSTM, 1-D CNN) that consume the frame sequence directly. For scalar summaries of vector-valued features, use setScalarizationMethods at extraction time instead.

  • Save extractor + data card — save("featureConfig.mat", "sFE", "dataCard") where dataCard records SampleRate, FrameSize, FrameOverlapLength, class(sFE), and version("-release"). Minimum sidecar to reproduce the extraction on new data.

See references/post-extraction-patterns.md for the worked code blocks and edge cases (vector-valued columns, label-column handling, alternative scalarization route).

Conventions (apply to all three extractors)

  • Always set SampleRate. Frequency-derived features interpret the signal as fs = 1 if SampleRate is omitted.

  • Pick FrameRate or FrameOverlapLength, not both. They control the same thing two different ways. Setting both raises an error.

  • FrameOverlapLength must be < FrameSize.

  • Set FrameSize and FrameOverlapLength in samples, not seconds. Convert: FrameSize = round(durationSeconds * fs).

  • Prefer FeatureFormat="table" when the extractor produces a mix of scalar and vector features.

  • FrameStartTime / FrameEndTime are 1-indexed sample positions, not seconds. Convert: tSec = (T.FrameStartTime - 1) / fs. Strip them before training a classifier.

  • Vector-valued feature columns are numeric matrices when per-frame length is fixed, cells when it varies. Check with iscell(T.(colName)) before indexing.

  • Don't guess feature names or parameters. Read the relevant per-extractor reference. Anything not in the reference does not exist on the object.

Common cross-cutting pitfalls

What you triedFix
Hand-rolled per-frame statistics over a windowed signal (e.g. RMS / crest factor loop on a buffered signal)Use the extractor object — composes with extract, has a codegen path.
FrameLength=N instead of FrameSize=NProperty is FrameSize on all three extractors.
Set both FrameRate and FrameOverlapLengthPick one.
gpuArray(x) without canUseGPU() guardHard-errors on CPU-only machines. Wrap in if canUseGPU(); x = gpuArray(x); end.

For extractor-specific pitfalls (e.g., Skewness=true on the time extractor, MeanEnvelopeEnergy on a non-EMD transform, the PowerBandwidth parameter being RelativeAmplitude rather than guessed from the feature name), see the per-extractor references.

References

  • references/preliminary-analysis.md — Signal-Processing-only spectral-stationarity check (pspectrum spectrogram + per-frame MeanFrequency drift ratio), the optional Econometrics adftest/kpsstest supplement, and the verdict→extractor decision rules. Read before picking an extractor when the signal character is unclear.

  • references/feature-ranking.md — a-priori candidate-feature list pattern and the signal-profile→feature mapping. Read when the user asks for a starting feature set or wants a ranked list.

  • references/extract-function.md — extract input/output contract, per-extractor output character, multi-extractor row alignment, and common error modes. Read when debugging shape or alignment issues.

  • references/signal-time-feature-extractor.md — full property and feature-flag surface for the time extractor. Read when verifying a time-feature name or property.

  • references/signal-frequency-feature-extractor.md — full property surface plus per-feature parameter tables (OccupiedBandwidth, PowerBandwidth, WelchPSD, peak parameters). Read when configuring frequency features.

  • references/signal-time-frequency-feature-extractor.md — Transform×feature compatibility matrix and per-transform parameter tables. Read this before enabling any feature on the time-frequency extractor.

  • references/scalarization-options.md — the three *ScalarFeatureOptions objects and the setScalarizationMethods API. Read when adding scalar summary columns to vector-valued features.

  • references/gpu-patterns.md — canUseGPU guard pattern and rationale. Read when the user mentions GPU.


Copyright 2026 The MathWorks, Inc.


Files

references/preliminary-analysis.md

Preliminary analysis before extractor selection

A small amount of upfront triage on a representative subset of signals will rule out the wrong extractor — and reduce the time spent debugging features that don't carry information. This is preliminary triage, not a full signal profile (the full profile is v2.0 scope).

Why this matters

The three feature extractors target different signal regimes:

  • signalTimeFeatureExtractor — impulsive / transient time-domain content.

  • signalFrequencyFeatureExtractor — assumes a (locally) stationary spectrum.

  • signalTimeFrequencyFeatureExtractor — non-stationary content where the spectrum changes over time.

Picking the wrong one wastes compute and produces features that don't separate classes. The decision that matters for extractor choice is spectral stationarity — does the frequency content change over time? — and you can answer it with Signal Processing Toolbox alone.

Spectral-stationarity check (Signal Processing Toolbox only)

This is the primary, dependency-free method. It requires no Econometrics Toolbox — only the Signal Processing Toolbox you already have for the extractors.

1. Look at a spectrogram. One line tells you whether the dominant frequency drifts over time:

pspectrum(x, fs, "spectrogram")

If a ridge of energy clearly moves across the frame (a rising/falling tone, a sweep, a formant track), the spectrum is non-stationary — reach for signalTimeFrequencyFeatureExtractor. If the energy sits at fixed frequencies for the whole signal, it's spectrally stationary.

2. Quantify the drift. For a numeric verdict that doesn't rely on eyeballing, track per-frame mean frequency and measure its relative spread. This dogfoods the frequency extractor — the same object you'll use downstream — so it needs nothing extra:

function [verdict, driftRatio] = spectralStationarityVerdict(x, fs, thresh)
%spectralStationarityVerdict Signal-only spectral-stationarity check.
%   Tracks per-frame mean frequency and reports the coefficient of
%   variation (drift ratio). A spectrum that drifts over time produces a
%   large drift ratio. Uses only Signal Processing Toolbox.
    arguments
        x      (:, 1) double {mustBeFinite}
        fs     (1, 1) double {mustBePositive}
        thresh (1, 1) double {mustBePositive} = 0.05
    end

    sFE = signalFrequencyFeatureExtractor( ...
        SampleRate=fs, ...
        FrameSize=round(0.1 * fs), ...
        FrameOverlapLength=round(0.05 * fs), ...
        MeanFrequency=true, ...
        FeatureFormat="matrix");

    meanFreqPerFrame = extract(sFE, x);
    meanFreqPerFrame = meanFreqPerFrame(:);
    driftRatio = std(meanFreqPerFrame) / mean(meanFreqPerFrame);

    if driftRatio > thresh
        verdict = "non-stationary";   % spectrum drifts -> time-frequency extractor
    else
        verdict = "stationary";       % spectrum stable  -> frequency extractor
    end
end

A drift ratio well above the threshold means the spectral center moves frame to frame. As a calibration point: a fixed two-tone signal scores ≈ 0.002, while a 500→4000 Hz chirp scores ≈ 0.44 — over two orders of magnitude apart, so the exact threshold is not delicate. Run this on a small representative subset (e.g., one signal per class), not every file.

Optional: mean/unit-root tests (Econometrics Toolbox)

Skip this section if you do not have Econometrics Toolbox — the spectral check above is the decisive one for extractor choice, and it stands alone.

If you do have Econometrics Toolbox, adftest and kpsstest add a second, orthogonal signal: they test for mean / unit-root stationarity (a random-walk trend), which the spectral check does not measure.

TestReturns h = 1 whenReturns h = 0 when
adftestStationary (rejects unit root)Non-stationary
kpsstestNon-stationary (rejects stationarity)Stationary

Critical caveat — these do not replace the spectral check. adftest and kpsstest test mean/unit-root stationarity, not spectral stationarity. A deterministic chirp has no random walk, so both tests will report it as "stationary" even though its spectrum sweeps across the band. For extractor selection — where the whole question is does the spectrum change over time — the spectrogram / drift-ratio check above is authoritative; treat a drifting spectrum as non-stationary regardless of the ADF/KPSS verdict.

function verdict = meanStationarityVerdict(x)
%meanStationarityVerdict Combined ADF + KPSS mean-stationarity verdict.
%   Requires Econometrics Toolbox. Tests mean/unit-root stationarity only —
%   NOT spectral stationarity. Use spectralStationarityVerdict for extractor
%   choice; this is a supplementary trend check.
    arguments
        x (:, 1) double {mustBeFinite}
    end

    hAdf  = adftest(x);            % 1 = stationary
    hKpss = kpsstest(x);           % 0 = stationary

    if hAdf == 1 && hKpss == 0
        verdict = "stationary";
    elseif hAdf == 0 && hKpss == 1
        verdict = "non-stationary";
    else
        verdict = "ambiguous";     % tests disagree — inspect manually
    end
end

Decision rules

Verdict + characterRecommended extractor(s)Starter feature flags
Stationary, narrowband / harmonicsignalFrequencyFeatureExtractorMeanFrequency, MedianFrequency, PeakAmplitude, PeakLocation, BandPower
Stationary, broadbandsignalFrequencyFeatureExtractorOccupiedBandwidth, WelchPSD (with scalarization), BandPower
Non-stationarysignalTimeFrequencyFeatureExtractor primary, but pair with signalFrequencyFeatureExtractor (per-frame spectral shape) and signalTimeFeatureExtractor (envelope / impulsive metrics)TF: SpectralEntropy, InstantaneousFrequency, TFRidges; Freq: MeanFrequency, PeakLocation, OccupiedBandwidth; Time: RMS, CrestFactor
Transient-dominatedsignalTimeFeatureExtractorRMS, PeakValue, CrestFactor, ImpulseFactor, ClearanceFactor
AmbiguousInspect a spectrogram before deciding. If the spectrum shifts over time, treat as non-stationary.—

The verdict picks the primary extractor, not the only one. For a classification or regression feature table, the strongest starting set almost always spans more than one domain — a non-stationary verdict does not mean "time-frequency features alone." See feature-ranking.md for the multi-domain candidate-list pattern; a set that collapses onto a single extractor is the most common cause of a weak downstream classifier.

For impulsiveness, the time extractor exposes CrestFactor / ImpulseFactor / ClearanceFactor — Kurtosis is not a time-extractor flag. See signal-time-feature-extractor.md.

What this is not

  • Not a full signal profile (periodicity, SNR, modulation, harmonic structure, sample-rate adequacy) — v2.0.

  • Not label-driven empirical ranking — v2.1.

  • Not preprocessing (DC removal, denoising, resampling) — v1.2.

The goal here is one decision: which extractor(s) to start with. Anything more is out of scope for v1.0.


Copyright 2026 The MathWorks, Inc.


Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Security

No issues found by our static scan· No issues found

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Created by
MathWorks
Publisher
MathWorks (Official)
Source
matlab/matlab-agentic-toolkit · skills-catalog/signal-processing/matlab-extract-signal-features · commit 2a7f215
Licence
BSD 2-Clause License (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE.md)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by MathWorks or MathWorks.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download matlab-extract-signal-features.zip