getDataValues
Class: io.reader
Namespace: io
Syntax
dataVals = getDataValues(obj)
Description
returns data values to use for data imported into the Simulation Data Inspector using a custom
file or workspace variable reader. Specify code for the dataVals
= getDataValues(obj
)getDataValues
method
to extract signal values from a proprietary file or variable format.
Input Arguments
obj
— Custom data reader
io.reader
subclass object
Custom data reader, specified as an object of a class that inherits from the io.reader
base class.
Example: MyCustomFileReader
Output Arguments
dataVals
— Signal values
numeric array | enum array | logical array | string array
Signal values, returned as an array of numeric, enumeration, logical, or string
values. For scalar signals and wide signals, the first dimension of the array aligns
with time and must match the length of the time vector returned by getTimeValues
. For multidimensional signals, the last dimension aligns with
time and must match the length of the time vector returned by
getTimeValues
.
Examples
Get Signal Values for Data Imported from File
Write the function definition for the getDataValues
method to return signal values to use for data imported from a file. The custom reader in
this example imports the data from the file with a hierarchical structure, treating the
file as the top node. Specify the code for the getDataValues
method in
the class definition file.
This example does not show a complete class definition. All custom readers must define
behavior for the getName
,
getTimeValues
, and getDataValues
methods. For an example that
shows the complete class definition and import workflow, see Import Data Using Custom File Reader.
In this example, the getChildren
method reads the data from the
file using the readtable
function and returns an array of custom
reader objects for the top-level node that corresponds to the file and for each signal
in the file. Then, the getDataValues
method reads the data using the
readtable
function and selects the signal data to return for each
signal in the file using the VariableName
property of each custom
reader object.
classdef ExcelFirstColumnTimeReader < io.reader methods % ... function childObj = getChildren(obj) childObj = {}; if isempty(obj.VariableName) t = readtable(obj.FileName); vars = t.Properties.VariableNames; vars(1) = []; childObj = cell(size(vars)); for idx = 1:numel(vars) childObj{idx} = ExcelFirstColumnTimeReader; childObj{idx}.FileName = obj.FileName; childObj{idx}.VariableName = vars{idx}; end end end function dataVals = getDataValues(obj) dataVals = []; if ~isempty(obj.VariableName) t = readtable(obj.FileName); dataVals = t.(obj.VariableName); end end % ... end end
Get Signal Values from Workspace Variable
Write the function definition for the getDataValues
method to return signal values from a workspace variable. Specify the code executed by the
getDataValues
method in the class definition file.
This example does not show a complete class definition. All custom readers must define
behavior for the getName
,
getTimeValues
, and getDataValues
methods, and workspace data
readers need to define the supportsVariable
method. For an example that shows the complete class
definition and import workflow for a workspace data reader, see Import Workspace Variables Using a Custom Data Reader.
The custom reader in this example imports a structure or an array of structures from
the workspace. The structures must contain fields for the signal data
(d
), the time data (t
), and the signal name
(n
). When the variable to import is a scalar structure, the
getDataValues
method returns the data from the d
field of the structure.
When the variable is an array of structures, the custom reader uses both the
getDataValues
and getChildren
methods to import the
data. The getChildren
method creates a custom reader object for each
structure in the array and sets the ChannelIndex
property to
identify the index of the signal data within the array. Then, the
getDataValues
method uses the ChannelIndex
property value to select the appropriate structure from the
VariableValue
property value, which is the array of
structures.
classdef SimpleStructReader < io.reader properties ChannelIndex end methods % ... function childObj = getChildren(obj) childObj = {}; if ~isscalar(obj.VariableValue) && isempty(obj.ChannelIndex) numChannels = numel(obj.VariableValue); childObj = cell(numChannels,1); for idx = 1:numChannels childObj{idx} = SimpleStructReader; childObj{idx}.VariableName = sprintf('%s(%d)',obj.VariableName,idx); childObj{idx}.VariableValue = obj.VariableValue; childObj{idx}.ChannelIndex = idx; end end end function dataVals = getDataValues(obj) if isscalar(obj.VariableValue) dataVals = obj.VariableValue.d; elseif ~isempty(obj.ChannelIndex) varVal = obj.VariableValue(obj.ChannelIndex); dataVals = varVal.d; else dataVals = []; end end % ... end end
Version History
Introduced in R2020b
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)