Simulink.sdi.CustomSnapshot class

Package: Simulink.sdi

Specify settings for a snapshot without opening or affecting the Simulation Data Inspector

Description

Use a Simulink.sdi.CustomSnapshot object to specify settings for a snapshot you want to create without opening the Simulation Data Inspector or affecting the open session. Creating a snapshot using a Simulink.sdi.CustomSnapshot object is the best option for fully scripted workflows. You can specify the snapshot dimensions in pixels, the subplot layout, and limits for the x- and y- axes. You can use the clearSignals and plotOnSubplot methods to plot signals you want to include in the snapshot. To capture the snapshot, you can pass the Simulink.sdi.CustomSnapshot object as the value for the settings name-value pair for the Simulink.sdi.snapshot function or use the snapshot method.

Construction

snap = Simulink.sdi.CustomSnapshot creates a Simulink.sdi.CustomSnapshot object.

Properties

expand all

Image width, in pixels.

Example: 750

Image height, in pixels.

Example: 500

Number of subplot rows, specified as a scalar between 1 and 8, inclusive. Use Rows and Columns to set your desired subplot layout.

Example: 2

Number of subplot columns, specified as a scalar between 1 and 8, inclusive. Use Rows and Columns to set your desired subplot layout.

Example: 3

Limits for the time axis in the snapshot. The time axis limits are the same for all subplots. By default, the time axis adjusts to accommodate the largest time range of the plotted signals.

Example: [0 20]

Cell array of 1-by-2 matrices specifying the y-axis limits for all subplots in the custom snapshot. By default, the snapshot operation auto-scales the y-axis to fit the plotted data.

Example: {[-10 10],[0 100]}

Methods

clearSignals Clear signals plotted on subplots of a Simulink.sdi.CustomSnapshot object
plotOnSubPlot Plot signals on Simulink.sdi.CustomSnapshot object subplots
snapshot Create a custom snapshot

Copy Semantics

Handle. To learn how handle classes affect copy operations, see Copying Objects (MATLAB).

Examples

collapse all

This example shows how to copy view settings from one run to another and how to create figures using the Simulink.sdi.CustomSnapshot object.

Simulate Your Model and Get a Run Object

Configure the vdp model to save output data, and run a simulation to create data.

load_system('vdp')
set_param('vdp','SaveFormat','Dataset','SaveOutput','on')
set_param('vdp/Mu','Gain','1');
sim('vdp');

Use the Simulation Data Inspector programmatic interface to access the run data.

runIndex = Simulink.sdi.getRunCount;
runID = Simulink.sdi.getRunIDByIndex(runIndex);
vdpRun = Simulink.sdi.getRun(runID);

Modify Signal View Settings

Use the Simulink.sdi.Run object to access signals in the run. Then, modify the signal view settings. This example specifies the line color and style for each signal. The view settings for the run comprise the view settings for each signal and view settings specified for the plot area.

sig1 = vdpRun.getSignalByIndex(1);
sig2 = vdpRun.getSignalByIndex(2);

sig1.LineColor = [0 0 1];
sig1.LineDashed = '-.';

sig2.LineColor = [1 0 0];
sig2.LineDashed = ':';

Capture a Snapshot from the Simulation Data Inspector

Create a Simulink.sdi.CustomSnapshot object and use the Simulink.sdi.snapshot function to programmatically capture a snapshot of the contents of the Simulation Data Inspector.

snap = Simulink.sdi.CustomSnapshot;

You can use properties of the Simulink.sdi.CustomSnapshot object to configure the plot settings, like the subplot layout and axis limits, and to plot signals. When you use a Simulink.sdi.CustomSnapshot object to create your figure, these plot settings do not affect the Simulation Data Inspector.

snap.Rows = 2;
snap.YRange = {[-2.25 2.25],[-3 3]};
snap.plotOnSubPlot(1,1,sig1,true)
snap.plotOnSubPlot(2,1,sig2,true)

Use Simulink.sdi.snapshot to generate the figure you specified in the properties of the Simulink.sdi.CustomSnapshot object.

fig = Simulink.sdi.snapshot("from","custom","to","figure","settings",snap);

Copy the View Settings to a New Simulation Run

Simulate the model again, with a different Mu value. Use the Simulation Data Inspector programmatic interface to access the simulation data.

set_param('vdp/Mu','Gain','5')
sim('vdp');

runIndex2 = Simulink.sdi.getRunCount;
runID2 = Simulink.sdi.getRunIDByIndex(runIndex2);
run2 = Simulink.sdi.getRun(runID2);

To create a plot of the new output data that looks like the one you created in the previous step, you can copy the view settings to the run in a single line of code using Simulink.sdi.copyRunViewSettings. The Simulink.sdi.copyRunViewSettings function does not automatically update plot settings in Simulink.sdi.CustomSnapshot objects, so specify the plot input as false.

sigIDs = Simulink.sdi.copyRunViewSettings(runID,runID2,false);

Capture a Snapshot of the New Simulation Run

Use the Simulink.sdi.CustomSnapshot object to capture a snapshot of the new simulation run. First, clear the signals from the subplots. Then, plot the signals from the new run and capture another snapshot.

snap.clearSignals
snap.YRange = {[-2.25 2.25],[-8 8]};
snap.plotOnSubPlot(1,1,sigIDs(1),true)
snap.plotOnSubPlot(2,1,sigIDs(2),true)

fig = snap.snapshot("to","figure");

Introduced in R2018a