getName
クラス: io.reader
名前空間: io
構文
retName = getName(obj)
説明
は、ワークスペースまたはファイルからインポートされたデータ内の信号または階層ノードに対してシミュレーション データ インスペクターで使用する名前を返します。retName
= getName(obj
)
入力引数
出力引数
retName
— 信号名
文字配列
シミュレーション データ インスペクターで使用される信号名。文字配列として返されます。
例
ファイルからインポートされたデータの名前を取得する
ファイルからインポートされた信号の名前を返すように 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 コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)