getChildren

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

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

Синтаксис

childObj = getChildren(obj)

Описание

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

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

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

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

Пример: MyCustomFileReader

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

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

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

Примеры

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

Этот пример использует getChildren метод для импорта нескольких сигналов из файла как плоского списка сигналов, содержащихся в узле верхнего уровня, который представляет файл. Задайте код для getChildren метод в файле определения класса.

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

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