getDataValues

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

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

Синтаксис

dataVals = getDataValues(obj)

Описание

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

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

расширить все

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

Пример: MyCustomFileReader

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

расширить все

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

Признаки

Abstracttrue

Чтобы узнать об атрибутах методов, см. «Атрибуты метода».

Примеры

расширить все

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

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

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

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 методы для импорта данных. The getChildren метод создает пользовательский объект reader для каждой структуры массива и устанавливает 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