convert a variable string to data

12 views (last 30 days)
mohammad
mohammad on 11 Sep 2011
it's needed to convert a variable string to data. for example NAME is string and in a loop could be i=1>>NAME='abd', i=2>>>NAME='fdr',.... now how to convert this string to data. its needed this variable string being matrix.
for example:
q=[];
for i:5
q=[q;i+1];
NAME=q; % i know this is wrong because NAME is string but here i need converting string to data
end
  2 Comments
Fangjun Jiang
Fangjun Jiang on 11 Sep 2011
What do you mean "string to data"? If NAME='abd', what should the data be?
mohammad
mohammad on 11 Sep 2011
I mean a thing like matrix, like d=[1 3 4 5], I need NAME=d but i know this is wrong but I need this. there is a command with name of eval but in this way i must first convert d to string like eval(sprntf('%s=d',NAME). is there another way?

Sign in to comment.

Answers (2)

Walter Roberson
Walter Roberson on 11 Sep 2011
Please do not do that. Please read this FAQ instead.
  2 Comments
mohammad
mohammad on 11 Sep 2011
thanks, but i must do, i don't want make names of a matrix or other thing, numbering. NAME varies with varying of 'i' in loop but the name of that not depends on 'i'.for example NAME is string and in a loop could be i=1>>NAME='abd'(NOT NAME1), i=2>>>NAME='fdr'(NOT NAME2),...
because its the name of a .xls file that in each loop another .xls file be read.
mohammad
mohammad on 11 Sep 2011
Walter, is there other way except eval(sprintf('%s=MATRIX',NAME))
MATRIX is a defined matrix

Sign in to comment.


Fangjun Jiang
Fangjun Jiang on 11 Sep 2011
If you really need to do this, eval(),evalin() or assignin() is the function to use. This is the same question as your previous one. There is no other way. But I highly recommend you read the link I provided. You could use structure which is very close to what you want.
Name={'abd','fdr'};
data=struct;
for k=1:length(Name)
data=setfield(data,Name{k},rand);
end
data =
abd: 0.65375734866856
fdr: 0.49417393663927
  2 Comments
mohammad
mohammad on 11 Sep 2011
thanks, sprintf:Format data into string. and i want opposite of sprint. maybe a command like dprintf :)
but there is not this command in matlab!
Fangjun Jiang
Fangjun Jiang on 11 Sep 2011
Well, for numeric data/digits, there is.
a=num2str(3.14159)
b=str2num(a)

Sign in to comment.

Categories

Find more on Data Type Conversion in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!