exponenta event banner

getChildren

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

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

Синтаксис

childObj = getChildren(obj)

Описание

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

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

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

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

Пример: MyCustomFileReader

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

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

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

Примеры

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

В этом примере используется getChildren способ импорта нескольких сигналов из файла в виде плоского списка сигналов, содержащихся в узле верхнего уровня, представляющем файл. Укажите код для getChildren в файле определения класса.

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

В этом примере getChildren считывает данные из файла с помощью readtable функция. Пользовательское считывающее устройство в этом примере всегда использует данные в первом столбце как время, поэтому имя первой переменной очищается и не используется. getChildren создает пользовательский объект чтения для узла верхнего уровня, который соответствует файлу и для каждого сигнала в файле, и присваивает значения FileName и 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
    
  % ...
  end
end 

В этом примере используется getChildren для импорта массива структур, хранящихся в переменной в базовой рабочей области. Укажите код для getChildren в файле определения класса.

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

В этом примере getChildren создает пользовательский объект считывателя для каждой структуры во входной переменной, если переменная является массивом структур. Устройство чтения рабочей области в этом примере определяет ChannelIndex свойство, которое getChildren используется для идентификации каждого создаваемого объекта.

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
    
  % ...
  end
end 
Представлен в R2020b