Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

getChildren

クラス: io.reader
パッケージ: io

カスタム リーダーを使用してインポートされたデータの各ノードと信号に対するカスタム リーダー オブジェクトを返す

構文

childObj = getChildren(obj)

説明

childObj = getChildren(obj) は、カスタム ファイルまたはワークスペース リーダーを使用してシミュレーション データ インスペクターにインポートされたデータの階層ノードと信号に対応するカスタム リーダー オブジェクトの配列を返します。getChildren メソッドを使用してインポートされたデータの階層を保持します。ファイルから複数の信号をインポートする場合、getChildren メソッドを使用して、ファイルに対応する最上位ノードの下に含まれている信号のフラット リストとしてデータをインポートします。

入力引数

すべて展開する

カスタム データ リーダー。io.reader 基底クラスから継承されるクラスのオブジェクトとして指定します。

例: MyCustomFileReader

出力引数

すべて展開する

インポートされたデータ内の階層ノードと信号。io.reader サブクラス オブジェクトの cell 配列として返されます。

すべて展開する

この例では getChildren メソッドを使用して、ファイルを表す最上位ノードに含まれている信号のフラット リストとしてファイルから複数の信号をインポートします。クラス定義ファイル内で getChildren メソッドのコードを指定します。

この例では完全なクラス定義は示しません。すべてのカスタム リーダーは getNamegetTimeValues、および 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 メソッドのコードを指定します。

この例では完全なクラス定義は示しません。すべてのカスタム リーダーは getNamegetTimeValues、および getDataValues メソッドの動作を定義しなければならず、ワークスペース データ リーダーは supportsVariable メソッドを定義しなければなりません。ワークスペース データ リーダーの完全なクラス定義およびインポート ワークフローを示す例については、カスタム データ リーダーを使用したワークスペース変数のインポートを参照してください。

この例では、getChildren メソッドは、変数が構造体の配列の場合、入力変数の各構造体のカスタム リーダー オブジェクトを作成します。この例のワークスペース リーダーは、作成する各オブジェクトを識別するために getChildren メソッドで使用する ChannelIndex プロパティを定義します。

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 で導入