getDataValues
クラス: io.reader
名前空間: io
カスタム リーダーを使用してインポートされたデータのデータ値を返す
構文
dataVals = getDataValues(obj)
説明
出力引数
信号値。数値、列挙値、logical 値、string 値の配列として返されます。スカラー信号および幅広い信号の場合、配列の最初の次元が時間と一致し、getTimeValues
で返される時間ベクトルの長さと一致しなければなりません。多次元信号の場合、最後の次元が時間と一致し、getTimeValues
で返される時間ベクトルの長さと一致しなければなりません。
例
ファイルからインポートされたデータで使用する信号値を返すように getDataValues
メソッドの関数定義を記述します。この例のカスタム リーダーは階層構造をもつファイルからデータをインポートし、ファイルを最上位ノードとして扱います。クラス定義ファイル内で getDataValues
メソッドのコードを指定します。
この例では完全なクラス定義は示しません。すべてのカスタム リーダーは getName
、getTimeValues
、および getDataValues
メソッドの動作を定義しなければなりません。完全なクラス定義およびインポート ワークフローを示す例については、カスタム ファイル リーダーを使用したデータのインポートを参照してください。
この例では、getChildren
メソッドは関数 readtable
を使用してデータを読み取り、ファイルおよびファイル内の各信号に対応する最上位ノードのカスタム リーダー オブジェクトの配列を返します。次に、getDataValues
メソッドは関数 readtable
を使用してデータを読み取り、各カスタム リーダー オブジェクトの 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 function dataVals = getDataValues(obj) dataVals = []; if ~isempty(obj.VariableName) t = readtable(obj.FileName); dataVals = t.(obj.VariableName); end end % ... end end
ワークスペース変数から信号値を返すように getDataValues
メソッドの関数定義を記述します。クラス定義ファイル内で getDataValues
メソッドにより実行されるコードを指定します。
この例では完全なクラス定義は示しません。すべてのカスタム リーダーは getName
、getTimeValues
、および getDataValues
メソッドの動作を定義しなければならず、ワークスペース データ リーダーは supportsVariable
メソッドを定義しなければなりません。ワークスペース データ リーダーの完全なクラス定義およびインポート ワークフローを示す例については、カスタム データ リーダーを使用したワークスペース変数のインポートを参照してください。
この例のカスタム リーダーはワークスペースから構造体または構造体の配列をインポートします。構造体には信号データ (d
)、時間データ (t
)、および信号名 (n
) のフィールドが含まれていなければなりません。インポートする変数がスカラー構造体の場合、getDataValues
メソッドは構造体の d
フィールドからデータを返します。
変数が構造体の配列の場合、カスタム リーダーはデータのインポートに getDataValues
メソッドと getChildren
メソッドの両方を使用します。getChildren
メソッドは配列内の各構造体に対してカスタム リーダー オブジェクトを作成し、配列内の信号データのインデックスを特定する ChannelIndex
プロパティを設定します。次に、getDataValues
メソッドは ChannelIndex
プロパティ値を使用して VariableValue
プロパティ値から構造体の配列である適切な構造体を選択します。
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 function dataVals = getDataValues(obj) if isscalar(obj.VariableValue) dataVals = obj.VariableValue.d; elseif ~isempty(obj.ChannelIndex) varVal = obj.VariableValue(obj.ChannelIndex); dataVals = varVal.d; else dataVals = []; end end % ... end end
バージョン履歴
R2020b で導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)