getTimeValues

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

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

Синтаксис

timeVals = getTimeValues(obj)

Описание

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

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

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

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

Пример: MyCustomFileReader

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

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

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

Примеры

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

Запишите функциональное определение для 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