R2026b

New Features, Compatibility Considerations

 Tracking Data Importer App: Import multiple truth files

The Tracking Data Importer app now supports importing multiple truth files or MATLAB tables in a single session. You can use different converters for files of different formats. The app maintains platform ID and class ID mappings across files, validates that time periods do not overlap for the same platform, and provides options to visualize the imported data.

You can also import and convert multiple truth sources programmatically. The trackingScenarioRecording, tuningData, truthlog, and convertedTable object functions of the TrackingTruthDataImporter object now accept multiple source inputs.

Tracking Data Importer App: Visualize larger trajectory data sets

The Tracking Data Importer app now supports efficient visualization of trajectory data in the globe view. When working with large data sets, the app reduces the number of displayed points while maintaining an accurate representation of the trajectories.

 Track space targets using new target and sensor specifications

You can now track space targets using the specification-based tracking framework. Use the trackerTargetSpec function to create an EarthCenteredKeplerian target specification that uses a Keplerian two-body motion model in the Earth-centered inertial (ECI) frame. Use the trackerSensorSpec function to create a SpaceGroundBasedRadar sensor specification that models a ground-based scanning radar.

These specifications require an Aerospace Toolbox license.

Plot tracks, sensor data, and coverage using target and sensor specifications

You can now use the plotTrack, plotSensorData, and plotCoverage object functions of the trackingGlobeViewer with target and sensor specifications. These syntaxes automatically select the appropriate reference frame for plotting based on the specifications.

Enhancements in timescope Object

The timescope object includes the following enhancements in R2026b.

Display measurements using engineering notation

The timescope object now displays the cursor measurements, peaks, statistics, and bilevel measurements using engineering notation.

Sinusoidal signal showing cursors and signal statistics. The scope displays the measurements data using the power of 3 in engineering notation.

Interactive cursors panel

In the timescope object display, you can now change the cursor channel and the cursor location directly from the Cursors panel.

Time scope display showing the cursor channel being updated directly in the Cursors panel.

New YLimitsMode property

You can control how the timescope object determines the Y-axis limits using the new YLimitsMode property.

  • "auto" — Automatically adjusts the Y-axis limits to fit the currently displayed data.

  • "manual" — Uses fixed Y-axis limits.

The YLimitsMode property is recommended over the AxesScaling property for controlling the Y-axis limits.

New fitToView object function

You can now use the new fitToView object function to automatically adjust the Y-axis limits of a timescope object to fit the currently displayed data. This function performs a one‑time autoscaling operation without changing the YLimitsMode property and is useful for resetting the view or updating Y-axis limits on demand.

New Restore View (Home) button in Axes Toolbar

The Restore View (Home) button in the time scope axes toolbar resets the X-axis to show only the most recent time span of data after zooming, panning, or fit-to-view operations. This button also resets the Y-axis limits based on value of the YLimitsMode property of the timescope object.

Support for automatic buffer length

The timescope object now uses an automatic buffer length by default with the BufferLength property set to "auto", ensuring that the scope retains sufficient data to display the full time span. In this mode, the buffer:

  • Always holds at least one full time span of data.

  • Typically holds approximately 100× the time span, with a minimum of 1e5 samples per channel and an upper limit of 1e7 samples per channel. If the time span exceeds 1e7 samples per channel, the buffer grows as needed to store at least one full time span of data.

poseplot Function: Plot multiple poses with improved performance, improve STL mesh visualization, improve multi-pose visibility, and name change for properties

The poseplot function has these changes:

Batch Input Support

You can now visualize multiple poses in a single function call by passing arrays of orientations and positions to the poseplot function. This approach makes your code more concise and delivers performance improvements for workflows involving trajectories or time-series pose estimates. For example, this code plots 1000 poses in R2026a, using a loop, and in R2026b, using an array. The R2026b code using an array is about 5x faster:

R2026a:

function timingTest
    numPoses = 1000;
    orientations = quaternion(randn(numPoses,4));
    positions = cumsum(randn(numPoses,3),1);

    for i = 1:numPoses
        poseplot(orientations(i),positions(i,:),"ENU",MeshFileName="multirotor.stl");
    end
end

R2026b:

function timingTest
    numPoses = 1000;
    orientations = quaternion(randn(numPoses,4));
    positions = cumsum(randn(numPoses,3), 1);

    poseplot(orientations, positions, 'ENU', MeshFileName = 'multirotor.stl');
end

The approximate execution times are:

  • R2026a: 45.34 s

  • R2026b: 9.87 s

The code was timed on a Windows® 11, AMD Epyc® 74F3 24-Core Processor CPU @ 3.19 GHz test system using the timeit function:

timeit(@timingTest)

Multi-Pose Visualization Improvements

You can now control the visibility of the orientation axis labels and the origin box using the new PoseAxisLabels and OriginBox properties, respectively, of the PosePatch object. You can use these properties to improve plot visibility when displaying many poses simultaneously.

Mesh Visualization Enhancements

You can now tune the rendering of an STL mesh by adjusting the display of mesh edges using the new EdgeDensity property of the PosePatch object. You can now also control the color, transparency, and width of edges using the new EdgeColor, EdgeAlpha, and EdgeLineWidth properties, respectively, of the PosePatch object.

These figures compare the display of an STL mesh with the maximum EdgeDensity value of 1, which renders all mesh edges, on the left, and a lower EdgeDensity value of 0.97, which renders fewer mesh edges, on the right.

Fixed-wing aircraft STL mesh displayed by the poseplot function with the EdgeDensity property set to 1, rendering all mesh edges so the surface appears as a dense, solid mesh.

Fixed-wing aircraft STL mesh displayed by the poseplot function with the EdgeDensity property set to 0.97, rendering fewer mesh edges so the surface appears lighter with sparser edges.

PatchFaceColor and PatchFaceAlpha properties renamed

The PatchFaceColor and PatchFaceAlpha properties of the PosePatch object are now called FaceColor and FaceAlpha, respectively. The behavior of both properties remains the same. There are no plans to remove support for existing references to PatchFaceColor and PatchFaceAlpha.

 Enhanced control over parallel execution with UseParallel

The UseParallel name-value argument for the monteCarloRun function and the UseParallel property for the staticDetectionFuser and trackingFilterTuner objects now accept "off", "auto", or "on" values instead of true or false. This change gives you more control over when to use a parallel pool for parallel execution.

Specifying UseParallel as true or false is not recommended.

GoalNot recommendedRecommended
Write code that runs on the MATLAB client.foo(UseParallel=false)foo(UseParallel="off") (default)
Write portable code that runs on a parallel pool and, if a pool is not available, runs on the MATLAB client.foo(UseParallel=true)foo(UseParallel="auto")
Write code that runs on a parallel pool and errors if a pool is not available.N/Afoo(UseParallel="on")

There are no plans to remove support for the true or false values.