I have written a code that generates 20 strings (the number actually varies depending on the input), all of which have the names "s_idx_?" where ? is a number from 1 to 20. Is there a command that allows me to concatenate all these strings without having to type out all the names? Thanks.

댓글 수: 5

Nathan Greco
Nathan Greco 2011년 7월 19일
First: it is generally nicer to create one data structure to contain all of these strings rather than creating a variable per string. Look up cell arrays, they are your friend. Rather than calling your strings s_idx_?, you could just call them s{?} where ? is your old number.
E. Elgar
E. Elgar 2011년 7월 19일
Actually I'm oversimplifying the problem a bit. This is the code I have:
for e = 1:length(c)
f = eval(c{e}); % for each c, f gives the list of cues under the condition
for g = 1:length(f) % runs through the whole string of cues (f)
i = f{g};
h = genvarname('s_idx_',who);
eval([h '= find(strcmp(''' i ''',theData.study.cue))']); % matches each i with a number from some list I have
end
end
The output is a bunch of variables called "s_idx_?". The number of variables will change if I change the input. I've tried creating cell arrays as Nathan suggested, but it doesn't seem to work.
Sean de Wolski
Sean de Wolski 2011년 7월 19일
POISON!! EVAL!! Don't do it!!
E. Elgar
E. Elgar 2011년 7월 20일
!! Other solutions then?

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

 채택된 답변

Sean de Wolski
Sean de Wolski 2011년 7월 19일

1 개 추천

Don't do it!
but if you have to:
sprintf('s_idx_%i\n',1:20)

댓글 수: 1

Jan
Jan 2011년 7월 20일
I agree with "Don't do it". The SPRINTF command concatenates the _names_ of the variables?! The OP wants to cat the string values.

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

추가 답변 (1개)

Jan
Jan 2011년 7월 20일

2 개 추천

Follow Sean's link to the FAQ. There you find the suggestion to use a cell like "s_idx{i}" instead of including the index in the name of the variables. Thjen the concatenation is easy:
s = cat(2, s_idx{:});

댓글 수: 1

E. Elgar
E. Elgar 2011년 7월 20일
Thank you! I think this will work.

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

카테고리

도움말 센터File Exchange에서 Variables에 대해 자세히 알아보기

질문:

2011년 7월 19일

편집:

2023년 9월 12일

Community Treasure Hunt

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

Start Hunting!

Translated by