exponenta event banner

getTimeValues

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

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

Синтаксис

timeVals = getTimeValues(obj)

Описание

timeVals = getTimeValues(obj) возвращает значения времени, используемые для данных, импортированных в инспектор данных моделирования с помощью пользовательского модуля чтения файлов или переменных рабочей области. Укажите код для getTimeValues способ извлечения данных из запатентованного файла или переменного формата.

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

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

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

Пример: MyCustomFileReader

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

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

Значения времени для импортированных данных, возвращаемые в виде вектора столбца.

Признаки

Abstracttrue

Сведения об атрибутах методов см. в разделе Атрибуты метода.

Примеры

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

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

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

В этом примере getTimeValues считывает данные из файла с помощью readtable и возвращает данные из первого столбца для использования в качестве значений времени для импортированных сигналов.

classdef ExcelFirstColumnTimeReader < io.reader
  methods
    % ...

    function timeVals = getTimeValues(obj)
      timeVals = [];
      if ~isempty(obj.VaribleName)
        t = readtable(obj.FileName);
        timeName = t.Properties.VariableNames{1};
        timeVals = t.(timeName);
      end  
    end

  % ...
  end
end

Запишите определение функции для getTimeValues для возврата значений времени для данных, импортированных из рабочей области. Укажите код, выполняемый getTimeValues в файле определения класса.

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

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

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

classdef ExcelFirstColumnTimeReader < 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 timeVals = getTimeValues(obj)
      if isscalar(obj.VariableValue)
        timeVals = obj.VariableValue.t;
      elseif ~isempty(obj.ChannelIndex)
        varVal = obj.VariableValue(obj.ChannelIndex);
        timeVals = varVal.t;
      else
        timeVals = [];
      end  
    end

  % ...
  end
end
Представлен в R2020b