matlab-import-tracking-data
Import raw data (CSV, XLSX, TXT, or MATLAB tables) into formats used by Sensor Fusion and Tracking Toolbox. Handles both ground truth trajectories and sensor detection data. For truth: builds trackingScenarioRecording, tuning timetable, truthlog, or converted table.
Install / Use
npx skills add matlab/matlab-agentic-toolkit --skill matlab-import-tracking-dataInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
Data & AnalyticsSupported Platforms
Tags
Our assessment of matlab-import-tracking-data
matlab-import-tracking-data scores 93/100 on our quality scale, 137th of 510 Data & Analytics skills we index (top 27%).
Its SKILL.md is 17 KB long, well organised into 26 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-import-tracking-data 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-import-tracking-data compared with similar skills
All 4 of these similar skills score higher than matlab-import-tracking-data; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| matlab-import-tracking-data (this skill)by matlab | 93 | 1.1k | 18d ago | SKILL.md |
| algorithmic-artby anthropics | 100 | 177.9k | 11d ago | SKILL.md |
| pptxby anthropics | 100 | 177.9k | 11d ago | SKILL.md |
| designby nextlevelbuilder | 100 | 130.2k | 12d ago | SKILL.md |
| ui-ux-pro-maxby nextlevelbuilder | 100 | 130.2k | 12d ago | SKILL.md |
Frequently asked questions
- How do I install matlab-import-tracking-data?
- Run
npx skills add matlab/matlab-agentic-toolkit --skill matlab-import-tracking-data. The install tabs above show the steps for each supported agent. - Which AI agents does matlab-import-tracking-data 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-import-tracking-data 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-import-tracking-data still maintained?
- The repository was last updated 18 days ago, so matlab-import-tracking-data is actively maintained.
Skill content
View source on GitHubname: matlab-import-tracking-data description: "Import raw data (CSV, XLSX, TXT, or MATLAB tables) into formats used by Sensor Fusion and Tracking Toolbox. Handles both ground truth trajectories and sensor detection data. For truth: builds trackingScenarioRecording, tuning timetable, truthlog, or converted table. For sensor data: builds task-oriented dataFormat structs (preferred) or objectDetection arrays (legacy). Use when importing flight logs, GPS logs, radar detections, IR measurements, lidar/camera bounding boxes, ADS-B data, AIS ship tracks, or any recorded data for use with trackers, filter tuning, or tracker evaluation." license: https://www.mathworks.com/content/dam/mathworks/license/pmrl/license.md metadata: author: MathWorks version: "1.1"
Tracking Data Import
Import raw data into MATLAB for use with Sensor Fusion and Tracking Toolbox. Handles ground truth trajectories and sensor detection data. Writes plain MATLAB code.
When to Use
- User has recorded trajectory/position data and wants to replay, tune filters, or evaluate trackers
- User has sensor measurements (radar, IR, lidar, camera, sonar) and wants to feed them to a tracker
- User mentions flight logs, GPS logs, ADS-B, AIS, radar recordings, lidar point clouds, camera detections
- User asks about
trackingDataImporter,objectDetection,trackerSensorSpec,dataFormat, or importing data for trackers
When NOT to Use
- User is generating synthetic scenarios from scratch (use
trackingScenario) - User already has data in the correct SFTT format
- User needs to design a tracker or write tracking algorithms (use the multi-object-tracking skill)
- User is working with raw signal processing (waveform design, range-Doppler maps)
Routing: What Kind of Data?
Step 1: Determine data type
Ask: "What kind of data are you importing?"
| User's data | Route | |---|---| | Recorded positions/trajectories (truth, GPS, flight logs) | Truth pathway | | Sensor measurements (radar detections, IR bearings, lidar boxes, camera boxes) | Sensor pathway |
Inference signals from column inspection:
- Truth-like: continuous position per object ID over time, no noise/accuracy columns
- Sensor-like: measurement quantities (range, azimuth, RCS), accuracy columns, multiple detections per timestep without guaranteed ID continuity
Step 2 (sensor data only): Identify sensor type and target application
Important: If Step 1 determined the data is truth/trajectory (positions per platform over time), stay in the Truth Pathway. Do NOT enter this step just because the user mentions IMM, UKF, or filter tuning — those refer to what the tuner will produce, not how to format the input data. Truth data → timetable. Sensor data → objectDetection or dataFormat struct.
Ask: "What sensor produced this data?" and "What are you tracking?"
Then decide the API internally (do NOT ask the user about APIs):
Use task-oriented path (preferred) when:
- A prebuilt
trackerSensorSpecmatches, OR - Measurements fit a
sensorMeasurementModel(any combo of az/el/range/rr, position, position-velocity) - AND user does not need TOMHT/PHD/GridRFS tracker or non-EKF filters
Use legacy objectDetection path when:
- User needs TOMHT, PHD, or GridRFS tracker (task-oriented only supports GNN/JIPDA)
- User needs UKF, CKF, IMM, particle filter (task-oriented uses EKF internally)
- Measurements don't fit any
sensorMeasurementModel(TDOA, custom geometry) - User explicitly requests objectDetection (for
trackingFilterTuneror existing code)
Truth Pathway
Truth/trajectory data (positions, velocities per platform over time) always produces timetables or struct arrays — never objectDetection. This applies even when the user mentions filter tuning, IMM, UKF, or other filter types. For tuning, the truth pathway produces timetables with Time (duration) and Position, Velocity columns (or a single State vector). The tuner's detection input must come from separate sensor measurement data — do NOT fabricate objectDetection from truth positions.
Step 1: Ask the User (2 questions only)
- What output do you need? (recording / tuning data / truth log / converted table)
- Where is the data? (file path or workspace variable name)
Step 2: Inspect the Data
Read the user's actual file — never generate synthetic data when the user provides a file path. Use readtable or equivalent to load the file, then display columns + sample rows. Infer the data model — do not ask yet:
- Geo vs Cartesian, category, time column & format, platform/class ID columns
- Position, velocity, orientation, dimension columns
- Units (default degrees/meters/m-per-s; adjust if names hint otherwise)
See references/interpreter-categories.md for category selection and column name patterns.
Step 3: Propose Mapping — Let User Confirm/Edit
Always present a data summary before writing any conversion code, even when the mapping is obvious. Include ALL of:
- Column names found in the data
- Detected units (from column name hints or defaults)
- Number of platforms/objects
- Time span (first/last timestamp, total duration)
- Proposed column-to-field mapping table (show unmapped columns)
Present inferred mappings as a table. Iterate until confirmed.
Step 4: Ask About Output Frame (geo data only)
Options: Cartesian ECEF, Cartesian Fixed NED/ENU (needs origin), Geodetic Local NED/ENU. Default: same as input. See references/coordinate-transforms.md.
Step 5: Generate and Run Code
Read references/output-formats.md before generating code — it defines required fields and defaults for missing states. Follow patterns in references/code-patterns.md. Key steps:
- Read data → extract columns → convert units → parse time
- Remap platform IDs to sequential integers
- Transform coordinates if needed
- Build output structure (see
references/output-formats.md) - Sort by time before building output
Step 6: Visualize
See references/visualization.md. Geo → trackingGlobeViewer; Non-geo → theaterPlot.
Stop here — do NOT run downstream tools (trackers, trackOSPAMetric, trackingFilterTuner, etc.). The user's data is now in the correct format. Tell the user what they have and show the calling convention for their intended use case.
Sensor Pathway: Task-Oriented (Preferred)
Use when measurements fit a prebuilt or custom trackerSensorSpec. The key insight: dataFormat is dynamic — it changes based on sensor spec properties. Never hardcode the struct; always query it.
Step 1: Select sensor spec
| Sensor description | Spec |
|---|---|
| Aerospace monostatic radar | trackerSensorSpec('aerospace','radar','monostatic') |
| Aerospace bistatic radar | trackerSensorSpec('aerospace','radar','bistatic') |
| ESM / direction finder | trackerSensorSpec('aerospace','radar','direction-finder') |
| Aerospace IR (angle-only) | trackerSensorSpec('aerospace','infrared','angle-only') |
| Automotive radar (clustered detections) | trackerSensorSpec('automotive','radar','clustered-points') |
| Automotive camera (2D bounding boxes) | trackerSensorSpec('automotive','camera','bounding-boxes') |
| Automotive lidar (3D bounding boxes) | trackerSensorSpec('automotive','lidar','bounding-boxes') |
| Other standard measurements | trackerSensorSpec('custom') — see Step 2b |
Step 2a: Configure spec properties from the data
Inspect the user's data and set properties that affect dataFormat:
Aerospace monostatic / ESM / IR:
HasElevation— does data have elevation measurements?HasRangeRate— does data have range-rate / Doppler? (radar only)IsPlatformStationary— is sensor position fixed or moving? (false adds PlatformPosition/Orientation/Velocity per look)MaxNumLooksPerUpdate— max scan dwells per update in the dataMaxNumMeasurementsPerUpdate— max detections per update in the data
Aerospace bistatic:
HasElevation,HasRangeRate— as aboveMeasurementMode—"range-angle"or"range-only"IsReceiverStationary,IsEmitterStationary— adds platform fields when false
Automotive radar:
HasElevation,MaxNumMeasurementsReferenceFrame—'ego'(measurements in body frame) or'global'(ego pose in global frame available)
Automotive camera / lidar:
MaxNumMeasurementsReferenceFrame—'ego'or'global'
Step 2b: Custom sensor spec (when no prebuilt fits)
For sensors with standard measurement types but no prebuilt spec (e.g., marine radar, sonar):
sensorSpec = trackerSensorSpec('custom');
sensorSpec.MeasurementModel = sensorMeasurementModel('<modelName>');
sensorSpec.DetectabilityModel = sensorDetectabilityModel('<modelName>');
sensorSpec.ClutterModel = sensorClutterModel('<modelName>');
sensorSpec.BirthModel = sensorBirthModel('<modelName>');
See references/sensor-data-formats.md for the complete model catalogs and property details.
For moving sensors, set UpdateModels = true — this adds Time, TimeVaryingModelData, and MeasurementVaryingModelData to the dataFormat.
Step 3: Inspect data — infer units, time, and reference frame
Read the user's actual file — never generate synthetic data when the user provides a file path. Determine:
- Time column & format — detect using the same heuristics as truth pathway (see
references/time-and-units.md). Convert to elapsed seconds from first timestamp. - Measurement units — infer from column name suffixes (
_deg,_rad,_km,_kts, etc.) or ask. Target units for thedataFormat:- Angles: degrees
- Ranges: meters
- Range-rate: m/s
- Position: meters
- Velocity: m/s
- Reference frame — if measurements are NOT in the sensor's native frame, plan a transform:
- Sensor-native = the frame the sensor naturally reports in (spherical for radar/ESM/IR, body-relative for automotive, image pixels for camera)
- If user's data is in a world frame (e.g., Cartesian NED positions from a fused tracker) but the sensor spec expects spherical measurements, convert back to sensor-native using sensor pose
- If user's data is in a different body frame convention (e.g., NED vs ENU), rotate accordingly
- If already in sensor-native frame (the common case), no transform needed
Step 4: Query dataFormat and propose mapping
fmt = dataFormat(sensorSpec);
disp(fmt)
Present a mapping table for user confirmation:
Your column → dataFormat field Action
"azimuth_deg" → LookAzimuth (1×N) direct (deg→deg)
"range_km" → Range (M×N) convert km→m (×1000)
"doppler_mps" → RangeRate (M×N) direct
"timestamp_epoch" → MeasurementTime (1×N) parse epoch→elapsed sec
"elev_rad" → LookElevation (1×N) convert rad→deg
[unmapped: "snr"] → (not used)
Include unit conversions and frame transforms in the "Action" column. Show unmapped columns. Iterate until user confirms.
Step 5: Configure sensor performance properties
Set from user input or use defaults: MountingLocation, MountingAngles, FieldOfView, RangeLimits, DetectionProbability, FalseAlarmRate/NumFalsePositivesPerScan.
Step 6: Generate code
Write code that populates the dataFormat struct per timestep in a loop. The output is an array of structs (one per update) ready to be passed to a tracker. Stop here — do NOT create or run a tracker. Tell the user their data is ready and show them the calling convention: tracker = multiSensorTargetTracker(targetSpec, sensorSpec, algorithm); tracks = tracker(sensorData(iUpdate)).
Rotation matrices from Euler angles: When data has yaw/pitch/roll and you need a 3×3 rotation matrix (e.g., for PlatformOrientation), build it from a quaternion:
R = rotmat(quaternion([yaw pitch roll], 'eulerd', 'ZYX', 'frame'), 'frame');
Preprocessing flags
|
Truncated for display — read the full file on GitHub.
Related Skills
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…
design
130.2kComprehensive design skill: brand identity, design tokens, UI styling, logo generation (55 styles, Gemini, Atlas Cloud, or MuAPI AI), corporate identity program (50 deliverables, CIP mockups), HTML presentations (Chart.js), banner design (22 styles, social/ads/web/print), icon design (15 styles, SVG…
ui-ux-pro-max
130.2kUI/UX design intelligence for web, mobile, and desktop. This skill should be used when designing, building, reviewing, or fixing interfaces, including pages, components, design systems, accessibility, interaction, responsive layout, typography, color, charts, and stack-specific UI implementation.
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.
