Explicitly numbered string?

조회 수: 12 (최근 30일)
nilsotto
nilsotto 2016년 2월 28일
댓글: nilsotto 2016년 2월 28일
Hi,
How do I explicitly define a string with numbering? Look at the example below. Suppose "numbers" are unknown and I want to name the figures Q1, Q2 etc.
numbers=3;
fname={'Q1' 'Q2' 'Q3'};
for i=1:numbers
if i==1
x = -2*pi:0.01:2*pi;
elseif i==2
x = -3*pi:0.01:3*pi;
else
x = -4*pi:0.01:4*pi;
end
y = sin(x);
h=figure
plot(x,y);
print(h,'-dpng',fname{1,i});
end

답변 (2개)

Guillaume
Guillaume 2016년 2월 28일
My recommendation is to use sprintf which lets you compose any arbitrary string that you want.
fnames = cell(1, numbers);
for i = 1:numbers
fname{i} = sprintf('Q%d', i);
end
Or as a one-liner:
fnames = cellfun(@(n) sprintf('Q%d', n), 1:numbers, 'UniformOutput', false);
Note that the format string of sprintf is very flexible. If you had more than 10 numbers and wanted to generate: Q01, Q02, ..., Q10, etc.:
sprintf('Q%02d', i)
  댓글 수: 2
Jan
Jan 2016년 2월 28일
Unfortunately undocumented yet:
fnames = sprintfc('Q%d', 1:numbers)
nilsotto
nilsotto 2016년 2월 28일
Many thanks guys!

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


Azzi Abdelmalek
Azzi Abdelmalek 2016년 2월 28일
numbers=3;
fname=genvarname(repmat({'Q'},1,numbers),'Q')
for ii=1:numbers
x = -(ii+1)*pi:0.01:(ii+1)*pi;
y = sin(x);
h=figure
plot(x,y);
print(h,'-dpng',fname{ii});
end
  댓글 수: 1
Guillaume
Guillaume 2016년 2월 28일
While genvarname would work in this case, it's not for generating abritrary strings, only valid variable names. The set of valid filenames is much greater than the set of valid variable names.

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

카테고리

Help CenterFile Exchange에서 String에 대해 자세히 알아보기

태그

제품

Community Treasure Hunt

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

Start Hunting!

Translated by