Matlab Compute Gnss PositionSAFE
The MATLAB Agentic Toolkit brings proven MATLAB capabilities to AI agents, making engineering and scientific workflows agent-ready.
Overview
The MATLAB Agentic Toolkit brings proven MATLAB capabilities to AI agents, making engineering and scientific workflows agent-ready.
58967e6f32b5OBSERVED · 2026-10-14What it tells the agent
The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.
---
name: matlab-compute-gnss-position
description: >
Computes multi-constellation Global Positioning System (GPS) or Global
Navigation Satellite System (GNSS) positions from RINEX v3 data using
rinexread, gnssmeasurements, receiverposition, and gnssoptions. Filters by constellation, elevation
mask, C/N0, and observation code. Reports DOP, scatter RMS, and satellite
count. Use when processing GNSS data, computing positions from RINEX
files, analyzing accuracy, comparing constellations, or evaluating
satellite geometry. Do NOT use for carrier-phase RTK/PPP, IMU fusion,
orbit propagation, NMEA streaming, or RINEX v4.
metadata:
author: MathWorks
version: "1.1"
license: https://www.mathworks.com/content/dam/mathworks/license/pmrl/license.md
---
# Multi-Constellation GNSS Positioning
Pseudorange-based single-point positioning (SPP) from RINEX v3 data. Supports
GPS, GLONASS, Galileo, BeiDou, QZSS, NavIC/IRNSS, and SBAS.
**Requires:** Navigation Toolbox R2026a or later.
## When to Use
- Processing RINEX observation/navigation files into position solutions
- Computing multi-constellation receiver positions
- Analyzing positioning accuracy, DOP, and satellite geometry
- Comparing single-constellation vs multi-constellation performance
- Evaluating the effect of processing options (elevation mask, C/N0, corrections)
- Teaching or demonstrating GNSS positioning concepts
## When NOT to Use
- Carrier-phase positioning (RTK, PPP, ambiguity resolution)
- Sensor fusion with IMU — use `matlab-fuse-inertial-sensors` or INS filters
- Satellite orbit propagation or scenario simulation — use Aerospace Toolbox
- Real-time NMEA stream processing — use `nmeaParser` directly
- RINEX v4 files — nested struct format requires different handling
## Must-Follow Rules
- **Always use `rinexinfo` first** to confirm RINEX v3 and inspect available constellations/observation codes before reading
- **Use the correct observation code per constellation** — wrong code produces empty measurements (see default codes table)
- **Pre-filter satellites with missing navigation data** before calling `gnssmeasurements` — it errors on any satellite without matching nav data
- **Always apply atmospheric corrections** via `gnssoptions` — uncorrected SPP has >20 m vertical error
- **Use `tiledlayout`/`nexttile`** for multi-panel figures (never `subplot`)
- **Label all axes** with units and include titles on every plot
- **Report DOP quality** — HDOP > 6 is degraded, HDOP > 20 is unusable
- **Skyplot requires a full-size figure** — never place `skyplot` inside a tile of a compact `tiledlayout`. Use a dedicated `figure` for the skyplot, or if it must share a layout, size the figure so the skyplot tile is at least 560×560 pixels. Skyplots in small tiles produce unreadable, overlapping satellite markers.
## Workflow
1. **Inspect RINEX files** — call `rinexinfo` on each file to confirm v3, identify constellations, and list available observation codes. Use `SatelliteSystem` and `Descriptors` to iterate over `ObservationTypes`:
```matlab
info = rinexinfo('rover.obs');
for i = 1:numel(info.ObservationTypes)
fprintf('%s: %s\n', info.ObservationTypes(i).SatelliteSystem, ...
strjoin(info.ObservationTypes(i).Descriptors, ', '));
end
```
2. **Resolve observation codes** — confirm default codes exist in the RINEX data; if not, suggest alternatives from the header
3. **Gather processing options** — constellation selection, elevation mask (degrees, default 10), C/N0 threshold (dB-Hz, default 0), observation code overrides
4. **Read data** — call `rinexread` for observation and navigation files
5. **Extract measurements** — call `gnssmeasurements` per constellation with the confirmed observation code; pre-filter observation data to remove satellites without matching nav data
6. **Filter by C/N0** — remove rows from observation timetable where signal strength column falls below threshold before calling `gnssmeasurements`
7. **Validate constellations** — solve each constellation independently first; if any produces wildly wrong positions (>1 km error, extreme altitudes), exclude it from the combination
8. **Combine constellations** — vertically concatenate validated measurement timetables: `combinedMeas = [gpsMeas; galMeas; ...]`
9. **Apply elevation mask** — compute initial position from one epoch, use `lookangles` to get satellite elevations, remove satellites below mask
10. **Solve position** — call `receiverposition` with `gnssoptions` for atmospheric corrections
11. **Report metrics** — per-epoch (HDOP, VDOP, satellite count) and aggregate (scatter RMS, mean DOP)
12. **Visualize** — skyplot, position time series, DOP and satellite count panels
13. **(Optional) Ground truth** — if user provides LLA, compute ENU error via `lla2enu`
## Default Observation Codes (Band 1 Preferred)
**Prefer frequency band 1 codes across all constellations.** Consistent band-1
codes produce more robust multi-constellation solutions by avoiding inter-frequency bias.
| Constellation | RINEX Field | Default Code | C/N0 Column | Notes |
|---------------|-------------|-------------|-------------|-------|
| GPS | `.GPS` | `"C1C"` | `S1C` | L1 C/A (band 1) |
| GLONASS | `.GLONASS` | `"C1C"` | `S1C` | L1 C/A (band 1) |
| Galileo | `.Galileo` | `"C1C"` | `S1C` | E1; use `"C1X"` if `C1C` unavailable |
| BeiDou | `.BeiDou` | `"C1P"` or `"C1X"` | `S1P` or `S1X` | Band 1 preferred (C1P, C1X, or any C1*) |
| QZSS | `.QZSS` | `"C1C"` | `S1C` | L1 C/A (band 1) |
| NavIC/IRNSS | `.NavIC` | `"C5A"` | `S5A` | L5 SPS (only band available) |
| SBAS | `.SBAS` | `"C1C"` | `S1C` | L1 C/A (band 1) |
**C/N0 column pattern:** Replace the `C` prefix in the observation code with `S` (e.g., `C1C` → `S1C`, `C1P` → `S1P`).
**Band-1 codes may have higher NaN rates** than higher-band alternatives but produce
more robust positions in multi-constellation solutions. Always check code availability
with `rinexinfo` and prefer band 1.
## ProcessiTrust audit
SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | NA |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- none-observed
- Shell
- none-observed
- Dependencies
- pinned
- Secrets in source
- none-found
Findings (0)
No findings outside the package's declared scope.
Gates applied: no_behavioural_pass.
58967e6f32b5full audit observations/trust-audit/skill/matlab__matlab-compute-gnss-position.json · Report an issue / request a re-scanAudit history
Every audit this skill has had.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-14 | 58967e6f32b5 | SAFE | B | 89 | first audit |
Questions
What does the Matlab Compute Gnss Position skill do?
The MATLAB Agentic Toolkit brings proven MATLAB capabilities to AI agents, making engineering and scientific workflows agent-ready.
Is Matlab Compute Gnss Position safe to install?
The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean skill reads B.
What can Matlab Compute Gnss Position access on my machine?
The audit observed no filesystem, network or shell use at all in its source.
What do I need installed to use Matlab Compute Gnss Position?
Its own instructions reference skyplot. Dependencies are pinned to exact versions.
How current is this page?
The grade is for one exact copy of the source (58967e6f32b5), read on 2026-10-14. The repository is watched, and a new audit runs when it changes — this is the first audit.