getTimeValues

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

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

Синтаксис

timeVals = getTimeValues(obj)

Описание

timeVals = getTimeValues(obj) возвращает значения времени для использования с данными, импортированными в Simulation Data Inspector с помощью пользовательского файла или программы чтения переменных рабочей области. Задайте код для 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 методы для возврата временных данных. The getChildren метод создает пользовательский объект reader для каждой структуры массива и устанавливает 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