matlab-extract-signal-features
Extract features from 1D signals using signalTimeFeatureExtractor, signalFrequencyFeatureExtractor, and signalTimeFrequencyFeatureExtractor
Install / Use
npx skills add matlab/matlab-agentic-toolkit --skill matlab-extract-signal-featuresInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
Development & EngineeringSupported Platforms
Tags
Our assessment of matlab-extract-signal-features
matlab-extract-signal-features scores 93/100 on our quality scale, 815th of 4,646 Development & Engineering skills we index (top 18%).
Its SKILL.md is 18 KB long, well organised into 15 sections with 4 code examples: a thorough specification that gives an agent plenty to work with.
With 1,098 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated 18 days ago, so matlab-extract-signal-features is actively maintained.
- No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
- Its trust signals score 88/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
matlab-extract-signal-features compared with similar skills
All 4 of these similar skills score higher than matlab-extract-signal-features; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| matlab-extract-signal-features (this skill)by matlab | 93 | 1.1k | 18d ago | SKILL.md |
| ai-job-searchby MadsLorentzen | 100 | 44.9k | today | CLAUDE.md |
| claude-howtoby luongnv89 | 100 | 41.7k | 3d ago | CLAUDE.md |
| algorithmic-artby anthropics | 100 | 177.9k | 11d ago | SKILL.md |
| pptxby anthropics | 100 | 177.9k | 11d ago | SKILL.md |
Frequently asked questions
- How do I install matlab-extract-signal-features?
- Run
npx skills add matlab/matlab-agentic-toolkit --skill matlab-extract-signal-features. The install tabs above show the steps for each supported agent. - Which AI agents does matlab-extract-signal-features work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is matlab-extract-signal-features safe to use?
- It declares no license and scores 88/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is matlab-extract-signal-features still maintained?
- The repository was last updated 18 days ago, so matlab-extract-signal-features is actively maintained.
Skill content
View source on GitHubname: matlab-extract-signal-features description: > 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. license: https://www.mathworks.com/content/dam/mathworks/license/pmrl/license.md metadata: author: MathWorks version: "1.1"
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
audioFeatureExtractorcovers those — out of scope here. - Batch / dataset orchestration —
signalDatastore,labeledSignalSet,tallarrays. 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
- (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-frameMeanFrequencydrift ratio (no Econometrics Toolbox needed;adftest/kpsstestare an optional supplement only). Use the verdict to pick the primary extractor — non-stationary signals favoursignalTimeFrequencyFeatureExtractor; spectrally stationary signals lean on the frequency extractor. Seereferences/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." Seereferences/feature-ranking.md. - Pick the extractor based on what the user wants. See "Choosing the right extractor" below.
- Configure with
SampleRate,FrameSize, and eitherFrameRateorFrameOverlapLength(not both). Enable feature flags as name-value pairs. - (Optional) Set per-feature or per-transform parameters via
setExtractorParametersfor features/transforms that have them. OnlysignalFrequencyFeatureExtractorandsignalTimeFrequencyFeatureExtractorsupport this method. The second argument can be a feature name OR a transform name. Before writing anysetExtractorParameterscall, 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. - (Optional) Move to GPU using the guard pattern in
references/gpu-patterns.md. - Run
extract(sFE, x)on the signal. Output shape depends onFeatureFormat(matrix or table).srcmay also be asignalDatastore/audioDatastore, in which caseextractreturns one result per file (a cell array) and acceptsUseParallel=trueto 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, seereferences/extract-function.md. - 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. Seereferences/post-extraction-patterns.md.
Stop and check the matching per-extractor reference before:
- Enabling any feature on
signalTimeFrequencyFeatureExtractor— eachTransformsupports a different subset. - Calling
setExtractorParameters— parameter names differ per feature and per transform. - Using any feature flag, parameter, or
Transformvalue 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 wants | Use |
|---|---|
| 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 above | Use 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
| Function | Purpose | Toolbox | Available From |
|---|---|---|---|
| signalTimeFeatureExtractor | Time-domain feature extractor object | Signal Processing Toolbox | R2021a |
| signalFrequencyFeatureExtractor | Frequency-domain feature extractor object | Signal Processing Toolbox | R2021b |
| signalTimeFrequencyFeatureExtractor | Time-frequency feature extractor object | Signal Processing Toolbox | R2024a |
| extract | Run a configured extractor on a signal | Signal Processing Toolbox | R2021a |
| getExtractorParameters / setExtractorParameters | Read/write per-feature or per-transform parameters (frequency and time-frequency only) | Signal Processing Toolbox | R2021b |
| timeFrequencyFeatureTransformOptions | Create transform options object for signalTimeFrequencyFeatureExtractor (replaces string Transform=) | Signal Processing Toolbox | R2026a |
| generateMATLABFunction | Emit a codegen-compatible MATLAB function from an extractor | Signal Processing Toolbox | R2021a |
| canUseGPU, gather | GPU availability check and data transfer (core MATLAB, no toolbox) | MATLAB | R2020b |
| gpuArray | Move array to GPU memory | Parallel Computing Toolbox | R2012a |
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 theUseParallel=truedatastore path both require **Parallel
Truncated for display — read the full file on GitHub.
Related Skills
ai-job-search
44.9kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
claude-howto
41.7kA visual, example-driven guide to Claude Code — from basic concepts to advanced agents, with copy-paste templates that bring immediate value.
algorithmic-art
177.9kCreating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems.
pptx
177.9kUse this skill any time a .pptx or .potx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx or .potx file (even if the extracted content will be used elsewhere, like in an em…
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
