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