Main Content

getTimeValues

クラス: io.reader
名前空間: io

カスタム リーダーを使用してインポートされたデータの時間値を返す

R2020b 以降

構文

timeVals = getTimeValues(obj)

説明

timeVals = getTimeValues(obj) はカスタム ファイルまたはワークスペース変数リーダーを使用して、シミュレーション データ インスペクターにインポートされたデータで使用する時間値を返します。getTimeValues メソッドのコードを指定して、独自のファイルまたは変数形式からデータを抽出します。

入力引数

すべて展開する

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

例: MyCustomFileReader

出力引数

すべて展開する

インポートされたデータの時間値。列ベクトルとして返されます。

属性

Abstracttrue

メソッドの属性の詳細については、メソッドの属性を参照してください。

すべて展開する

ファイルからインポートされたデータで使用する時間値を返すように getTimeValues メソッドの関数定義を記述します。この例のカスタム リーダーはファイルの最初の列にあるデータを常に時間として使用します。クラス定義ファイル内で getTimeValues メソッドのコードを指定します。

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

この例では、getTimeValues メソッドは関数 readtable を使用してファイルからデータを読み取り、インポートされた信号の時間値として使用するデータを最初の列から返します。

classdef ExcelFirstColumnTimeReader < io.reader
  methods
    % ...

    function timeVals = getTimeValues(obj)
      timeVals = [];
      if ~isempty(obj.VaribleName)
        t = readtable(obj.FileName);
        timeName = t.Properties.VariableNames{1};
        timeVals = t.(timeName);
      end  
    end

  % ...
  end
end

ワークスペースからインポートされたデータの時間値を返すように getTimeValues メソッドの関数定義を記述します。クラス定義ファイル内で getTimeValues メソッドにより実行されるコードを指定します。

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

この例のカスタム リーダーはワークスペースから構造体または構造体の配列をインポートします。構造体には信号データ (d)、時間データ (t)、および信号名 (n) のフィールドが含まれていなければなりません。インポートする変数がスカラー構造体の場合、getTimeValues メソッドはインポートされた構造体の t フィールド内の値を返します。

変数が構造体の配列の場合、カスタム リーダーは getTimeValues メソッドと getChildren メソッドの両方を使用して時間データを返します。getChildren メソッドは配列内の各構造体に対してカスタム リーダー オブジェクトを作成し、配列内の信号データのインデックスを特定する ChannelIndex プロパティを設定します。次に、getTimeData メソッドは ChannelIndex プロパティ値を使用して VariableValue プロパティ値から構造体の配列である適切な構造体を選択します。

classdef ExcelFirstColumnTimeReader < 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 timeVals = getTimeValues(obj)
      if isscalar(obj.VariableValue)
        timeVals = obj.VariableValue.t;
      elseif ~isempty(obj.ChannelIndex)
        varVal = obj.VariableValue(obj.ChannelIndex);
        timeVals = varVal.t;
      else
        timeVals = [];
      end  
    end

  % ...
  end
end

バージョン履歴

R2020b で導入