dynamic name variable as the output of a function

Hello,
I have a function that I call several times, in a loop and I change the parameter, and I would like to change the output name.
For example, what I am doing is
for i=1:N
ipath=eval(sprintf('Pathname%d',i))
output_i=call_function(ipath)
end
where I have previously defined ipath as some string, for example Pathname1='\home\dir1\'; Pathname2='\home\dir2\'; Pathname3='\home\dir3\'; ... and so on.
And this works, but I want to also change the name of the output_i. That is, I would like to have output_1, output_2, etc., but I have failed until now.
I have tried several things using eval(), but nothing seems to work. I have also tried things like sprintf('output%d',i)=call_function(ipath)
but that doesn't work either. Does anybody have any ideas?
Thank you very much

답변 (3개)

Jason Ross
Jason Ross 2013년 1월 9일

2 개 추천

If you are trying to process a series of files in a directory, there are a few examples here:

댓글 수: 1

Clara
Clara 2013년 1월 10일
Hello Jason, First of all, thanks for answering. I read the links you put. I don't fully comprehend the dangers of eval(). I don't see the problem with the example in the link. But, if I should avoid eval(), do you have any ideas on what could be an alternative solution to my original question?
Thanks,

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

Thorsten
Thorsten 2013년 1월 9일

1 개 추천

This should do the job:
eval(['output' int2str(i) ' = call_function(ipath);'])
or
eval(['output' int2str(i) ' = call_function(Pathname' int2str(i) ');'])
A better alternative, because faster and more readable, would be to get rid of the eval by using something like
output(i) = call_function(pathname(i));

댓글 수: 1

Clara
Clara 2013년 1월 10일
편집: Clara 2013년 1월 10일
This works perfectly! =) Thank you very much for your help.

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

카테고리

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

질문:

2013년 1월 9일

편집:

2019년 6월 19일

Community Treasure Hunt

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

Start Hunting!

Translated by