このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
genvarname
string から有効な変数名を作成
互換性
メモ
genvarname
は将来のリリースで削除される予定です。代わりに matlab.lang.makeValidName
と matlab.lang.makeUniqueStrings
を使用してください。
構文
varname = genvarname(str)
varname = genvarname(str, exclusions)
説明
varname = genvarname(str)
は、入力 str
と類似または同一の string または文字ベクトルからなり、有効な変数名として使用できる varname
を作成します。str
には、string、string 配列、文字配列、または文字ベクトルの cell 配列を指定できます。str
が string 配列または文字ベクトルの cell 配列の場合、genvarname
は varname
に string 配列または文字ベクトルの cell 配列を返します。genvarname
によって返される要素は、確実に相互に異なります。
varname = genvarname(str, exclusions)
は入力 exclusions
に列挙された名前と重複しない有効な変数名を返します。入力 exclusions
には、string、string 配列、文字配列、または文字ベクトルの cell 配列を指定できます。exclusions
に関数 who
を指定すると、現在の MATLAB® ワークスペース内で一意の変数名が作成されます (後述の例 4を参照)。
メモ
genvarname
は、MATLAB ワークスペース内に変数を作成しません。そのため、関数 genvarname
の出力に値を割り当てることはできません。
例
例 1
相互に重複しない 4 つの類似した変数名を作成します。
v = genvarname({'A', 'A', 'A', 'A'}) v = 'A' 'A1' 'A2' 'A3'
例 2
Excel® スプレッドシート myproj_apr23 のワークシート trial2
から列見出し hdr
を読み込みます。
[data hdr] = xlsread('myproj_apr23.xls', 'trial2');
列見出しのテキストから、他の変数名と重複しない変数名を作成します。
v = genvarname(['Column ' hdr{1,3}]);
スプレッドシートから取得したデータを MATLAB ワークスペース内の変数に割り当てます。
eval([v '= data(1:7, 3);']);
例 3
期間を 1 時間として、1 分ごとに測定器の読み取りを収集し、それらを構造体のさまざまなフィールドに格納します。乱数を使用して測定器の読み取りをシミュレートします。genvarname
は、一意のフィールド名を生成するだけでなく、MATLAB ワークスペース内で構造体およびフィールドも作成します。
for k = 1:60 record.(genvarname(['reading' char(datetime('now','Format','HHmmSS'))])) = rand(1); pause(60) end
プログラムの終了後、記録されたデータをワークスペースから表示します。
record record = reading092610: 0.6541 reading092710: 0.6892 reading092811: 0.7482 reading092911: 0.4505 reading093011: 0.0838 . . .
例 4
関数 who
からの出力を exclusions
リストに入力することにより、MATLAB ワークスペース内で一意の変数名を生成します。
for k = 1:5 t1 = datetime('now'); pause(uint8(rand * 10)); t2 = datetime('now'); v = genvarname('time_elapsed', who); eval([v ' = seconds(t2 - t1)']) end
このコードを実行すると、関数 genvarname
によって作成された変数がワークスペース内で一意であることがわかります。
time_elapsed = 5.0070 time_elapsed1 = 2.0030 time_elapsed2 = 7.0010 time_elapsed3 = 8.0010 time_elapsed4 = 3.0040
プログラムが完了したら、関数 who
を使用してワークスペースの変数を表示します。
who k time_elapsed time_elapsed2 time_elapsed4 t time_elapsed1 time_elapsed3 v
例 5
MATLAB キーワードから変数名を作成しようとすると、genvarname
は、そのキーワードを大文字にし、先頭に x
の文字を付けた変数名を作成します。
v = genvarname('global') v = xGlobal
例 6
関数 namelengthmax
から返される値より長い文字ベクトルを入力した場合、関数 genvarname
は結果の変数名の文字ベクトルを打ち切ります。
namelengthmax ans = 63 vstr = genvarname(sprintf('%s%s', ... 'This name truncates because it contains ', ... 'more than the maximum number of characters')) vstr = ThisNameTruncatesBecauseItContainsMoreThanTheMaximumNumberOfCha
ヒント
有効な MATLAB 変数名は、文字、数字、またはアンダースコアの文字ベクトルで、最初の字が文字、ベクトルの長さが関数 namelengthmax
によって返される値以下でなければなりません。namelengthmax
を超える文字ベクトルは、varname
出力で切り捨てられます。以下の例 6を参照してください。
exclusions
入力を後述の例 4に示す方法で指定しないかぎり、関数 genvarname
によって返された変数名が、MATLAB ワークスペースに現在存在する他の変数名と重複しないことは保証されません。
関数 genvarname
を使用して構造体のフィールド名を生成する場合には、MATLAB は構造体およびフィールドの変数を MATLAB ワークスペースに作成します。以下の例 3を参照してください。
入力 str
に空白文字が含まれる場合、関数 genvarname
は、空白文字を削除し、str
内の次のアルファベット文字を大文字にします。str
にアルファベット以外の文字が含まれる場合、関数 genvarname
はこれらの文字を 16 進数値に変換します。
拡張機能
バージョン履歴
R2006a より前に導入