getDataValues

Класс: io.reader
Пакет: iO

Возвратите значения данных для данных, импортированных с помощью пользовательского читателя

Синтаксис

dataVals = getDataValues(obj)

Описание

dataVals = getDataValues(obj) возвращает значения данных, чтобы использовать для данных, импортированных в Инспектора Данных моделирования, использующего пользовательский файл или читателя переменной рабочей области. Задайте код для getDataValues метод, чтобы извлечь значения сигналов из собственного файла или переменного формата.

Входные параметры

развернуть все

Пользовательское средство чтения данных в виде объекта класса, который наследовался io.reader базовый класс.

Пример: MyCustomFileReader

Выходные аргументы

развернуть все

Значения сигналов, возвращенные как массив числовых, перечисления, логического, или значения строки. Для скалярных сигналов и широких сигналов, первая размерность массива выравнивается со временем и должна совпадать с длиной временного вектора, возвращенного getTimeValues. Для многомерных сигналов последняя размерность выравнивается со временем и должна совпадать с длиной временного вектора, возвращенного getTimeValues.

Примеры

развернуть все

Запишите функциональное определение для getDataValues метод, чтобы возвратить значения сигналов, чтобы использовать для данных, импортированных из файла. Пользовательский читатель в этом примере импортирует данные из файла с иерархической структурой, обрабатывая файл как главный узел. Задайте код для getDataValues метод в файле определения класса.

Этот пример не показывает полное определение класса. Все пользовательские читатели должны задать поведение для getName, getTimeValues, и getDataValues методы. Для примера, который показывает полное определение класса и рабочий процесс импорта, смотрите, что Данные об Импорте Используют Пользовательское Средство чтения файлов.

В этом примере, getChildren метод считывает данные из файла с помощью readtable функционируйте и возвращает массив пользовательских объектов читателя для узла верхнего уровня, который соответствует файлу и для каждого сигнала в файле. Затем getDataValues метод считывает данные с помощью readtable функционируйте и выбирает данные сигнала, чтобы возвратиться для каждого сигнала в файле с помощью VariableName свойство каждого пользовательского объекта читателя.

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

Запишите функциональное определение для getDataValues метод, чтобы возвратить значения сигналов в переменную рабочей области. Задайте код, выполненный getDataValues метод в файле определения класса.

Этот пример не показывает полное определение класса. Все пользовательские читатели должны задать поведение для getName, getTimeValues, и getDataValues методы и средства чтения данных рабочей области должны задать supportsVariable метод. Для примера, который показывает полное определение класса и рабочий процесс импорта для средства чтения данных рабочей области, смотрите, что Переменные Рабочей области Импорта Используют Пользовательское Средство чтения данных.

Пользовательский читатель в этом примере импортирует структуру или массив структур из рабочей области. Структуры должны содержать поля для данных сигнала (d), данные времени (t), и имя сигнала (n). Когда переменная, чтобы импортировать является скалярной структурой, getDataValues метод возвращает данные из d поле структуры.

Когда переменная является массивом структур, пользовательский читатель использует обоих getDataValues и getChildren методы, чтобы импортировать данные. getChildren метод создает пользовательский объект читателя для каждой структуры в массиве и устанавливает ChannelIndex свойство идентифицировать индекс данных сигнала в массиве. Затем getDataValues метод использует ChannelIndex значение свойства, чтобы выбрать соответствующую структуру из VariableValue значение свойства, которое является массивом структур.

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
Введенный в R2020b