convert a variable string to data

조회 수: 4 (최근 30일)
mohammad
mohammad 2011년 9월 11일
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
Fangjun Jiang
Fangjun Jiang 2011년 9월 11일
What do you mean "string to data"? If NAME='abd', what should the data be?
mohammad
mohammad 2011년 9월 11일
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?

댓글을 달려면 로그인하십시오.

답변 (2개)

Walter Roberson
Walter Roberson 2011년 9월 11일
Please do not do that. Please read this FAQ instead.
  댓글 수: 2
mohammad
mohammad 2011년 9월 11일
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 2011년 9월 11일
Walter, is there other way except eval(sprintf('%s=MATRIX',NAME))
MATRIX is a defined matrix

댓글을 달려면 로그인하십시오.


Fangjun Jiang
Fangjun Jiang 2011년 9월 11일
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
mohammad
mohammad 2011년 9월 11일
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 2011년 9월 11일
Well, for numeric data/digits, there is.
a=num2str(3.14159)
b=str2num(a)

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Data Type Conversion에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by