Access Logged Signals with Spaces and Newlines in Logged Names
This example shows how to log signals with logged names that contain spaces or newlines. Open the model SpacesNewlines. The model logs three signals that illustrate:
A signal with a name that contains a space
A signal with a name that contains a newline
An unnamed signal that originates on a block with a name that contains a newline
mdl = "SpacesNewlines";
open_system(mdl)
Simulate the model.
out = sim(mdl)
out =
Simulink.SimulationOutput:
logsout: [1x1 Simulink.SimulationData.Dataset]
tout: [51x1 double]
yout: [1x1 Simulink.SimulationData.Dataset]
SimulationMetadata: [1x1 Simulink.SimulationMetadata]
ErrorMessage: [0x0 char]
All logged data is returned as a single Simulink.SimulationData object in a variable named out. Contained in the SimulationData object, signal logging data is grouped in a Simulink.SimulationData.Dataset object with the default name logsout. Use dot notation to access the signal logging data. In the Dataset object, names are displayed with a space where the signal name contains a space or a newline. The unnamed signal has an empty character array as its name.
sigData = out.logsout
sigData =
Simulink.SimulationData.Dataset 'logsout' with 3 elements
Name BlockPath
____ __________________________
1 [1x1 Signal] '' SpacesNewlines/Sine Wave2
2 [1x1 Signal] x y SpacesNewlines/Sine Wave
3 [1x1 Signal] a b SpacesNewlines/Sine Wave1
- Use braces { } to access, modify, or add elements using index.
You can access a signal with a name that contains a space by name or by index. For example, use the get function to access the signal named x y.
get(sigData,"x y")ans =
Simulink.SimulationData.Signal
Package: Simulink.SimulationData
Properties:
Name: 'x y'
PropagatedName: ''
BlockPath: [1×1 Simulink.SimulationData.BlockPath]
PortType: 'outport'
PortIndex: 1
Values: [1×1 timeseries]
Methods, Superclasses
You can also access a signal with a name that contains a newline by name or by index. To access the signal by name, use newline to concatenate a newline character between two strings.
sigName = ["a" + newline + "b"]; get(sigData,sigName)
ans =
Simulink.SimulationData.Signal
Package: Simulink.SimulationData
Properties:
Name: 'a↵b'
PropagatedName: ''
BlockPath: [1×1 Simulink.SimulationData.BlockPath]
PortType: 'outport'
PortIndex: 1
Values: [1×1 timeseries]
Methods, Superclasses
When a signal is unnamed, use indexing to access the signal.
sigData{3}ans =
Simulink.SimulationData.Signal
Package: Simulink.SimulationData
Properties:
Name: 'a↵b'
PropagatedName: ''
BlockPath: [1×1 Simulink.SimulationData.BlockPath]
PortType: 'outport'
PortIndex: 1
Values: [1×1 timeseries]
Methods, Superclasses