フィルターのクリア

how to make a variable name from a string

1 回表示 (過去 30 日間)
xianghong
xianghong 2013 年 8 月 16 日
2013a version
>> test='eye'
>> value = [5,5,3]
value =
5 5 3
>> eval([sprintf(test) '= data+1']);
Index exceeds matrix dimensions.
How to fix this error? Thank you for helping!

採用された回答

kjetil87
kjetil87 2013 年 8 月 16 日
編集済み: kjetil87 2013 年 8 月 16 日
The error should not appear, your code looks to work exept for the part of 'data' , should this instead be value?
test='eye';
value=[1,2,3];
eval([sprintf(test) '=value+1'])
eye =
2 3 4
The index exceeds matrix dimension could be related to that you have at some point declared a variable in your workspace ( or funciton or whatever ) with the name of eval.
try typing
which eval
it should return that eval is a built-in function, if it returns eval is a variable there is the reason for your error. If so just use
clear eval
  2 件のコメント
kjetil87
kjetil87 2013 年 8 月 16 日
also the sprintf is not really needed. + also check out
xianghong
xianghong 2013 年 8 月 19 日
when I tried this morning, it worked! Thank you so much! Have a great week!
Xianghong

サインインしてコメントする。

その他の回答 (3 件)

Walter Roberson
Walter Roberson 2013 年 8 月 16 日

xianghong
xianghong 2013 年 8 月 16 日
This seems like to name the fields within a variable. If I just want to make a variable name from a string, how to do it? Thanks!
  1 件のコメント
Walter Roberson
Walter Roberson 2013 年 8 月 16 日
No, it is not just for creating field names within a variable. It shows a number of different alternatives to creating a variable from a string, recommending strongly that you use one of the alternatives instead of creating a variable dynamically. At the end of the FAQ it shows how to create a variable dynamically, for the rare case when you really need to do that. If you are not engaged in creating extensions to MATLAB itself, chances are that there is a better route than creating a variable dynamically.

サインインしてコメントする。


xianghong
xianghong 2013 年 8 月 16 日
EDU>> test='eye';
EDU>> value=[1,2,3];
EDU>> eval([sprintf(test) '=value+1'])
Index exceeds matrix dimensions.
Looks like it still gave the error. What shall I do?
Thanks,
  2 件のコメント
Walter Roberson
Walter Roberson 2013 年 8 月 16 日
Please use the command
clear eval
and then try again
xianghong
xianghong 2013 年 8 月 19 日
thank you so much! It worked this monday morning!
Have a nice day!
Xianghong

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by