getName
クラス: io.reader
名前空間: io
カスタム リーダーを使用してインポートされたデータの名前を取得する
構文
retName = getName(obj)
説明
は、ワークスペースまたはファイルからインポートされたデータ内の信号または階層ノードに対してシミュレーション データ インスペクターで使用する名前を返します。retName = getName(obj)
出力引数
シミュレーション データ インスペクターで使用される信号名。文字配列として返されます。
例
ファイルからインポートされた信号の名前を返すように getName メソッドの関数定義を記述します。この例のカスタム リーダーは階層構造をもつファイルからデータをインポートし、ファイルを最上位ノードとして扱います。クラス定義ファイル内で getName メソッドのコードを指定します。
この例では完全なクラス定義は示しません。すべてのカスタム リーダーは getName、getTimeValues、および getDataValues メソッドの動作を定義しなければなりません。完全なクラス定義およびインポート ワークフローを示す例については、カスタム ファイル リーダーを使用したデータのインポートを参照してください。
この例では、getName メソッドおよび getChildren メソッドが連携し、適切な名前をインポートされた各信号に割り当てます。getChildren メソッドは関数 readtable を使用してファイルからデータを読み取ります。次にメソッドはファイルから読み取られる各信号のカスタム リーダー オブジェクトが含まれる cell 配列を作成します。
getName メソッドはカスタム リーダー オブジェクトの FileName プロパティを使用して、最上位ノードの名前としてファイル名を返します。getName メソッドは 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 retName = getName(obj) if isempty(obj.VariableName) fullName = obj.FileName; splitName = split(fullName,["\" "/"]); retName = splitName{end}; else retName = obj.VariableName; end % ... end end
ワークスペースからインポートされたデータの信号名を返すように getName メソッドの関数定義を記述します。クラス定義ファイル内で getName メソッドのコードを指定します。
この例では完全なクラス定義は示しません。すべてのカスタム リーダーは getName、getTimeValues、および getDataValues メソッドの動作を定義しなければならず、ワークスペース データ リーダーは supportsVariable メソッドを定義しなければなりません。ワークスペース データ リーダーの完全なクラス定義およびインポート ワークフローを示す例については、カスタム データ リーダーを使用したワークスペース変数のインポートを参照してください。
この例のカスタム リーダーはワークスペースから構造体または構造体の配列をインポートします。構造体には信号データ (d)、時間データ (t)、および信号名 (n) のフィールドが含まれていなければなりません。インポートする変数がスカラー構造体の場合、getName メソッドはインポートされた構造体の n フィールド内の値を返します。
変数が構造体の配列の場合、カスタム リーダーは getName メソッドと getChildren メソッドの両方を使用して信号名を返します。getChildren メソッドは配列内の各構造体に対してカスタム リーダー オブジェクトを作成し、配列内の信号データのインデックスを特定する ChannelIndex プロパティを設定します。次に、getName メソッドは 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 retName = getName(obj) if isscalar(obj.VariableValue) retName = char(obj.VariableValue.n); elseif ~isempty(obj.ChannelIndex) varVal = obj.VariableValue(obj.ChannelIndex); retName = char(varVal.n); else retName = 'Signal Array'; 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)