exponenta event banner

getDataValues

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

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

Синтаксис

dataVals = getDataValues(obj)

Описание

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

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

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

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

Пример: MyCustomFileReader

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

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

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

Признаки

Abstracttrue

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

Примеры

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

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