MATLAB Answers

0

how to assign multiple strings to single variable

Asked by Daniyal Arif on 4 Aug 2019
Latest activity Edited by per isakson
on 5 Aug 2019
i have to write this code through loop ..
jan=[jan_1958,jan_1959,jan_1960,jan_1961,jan_1962,jan_1963,jan_1964,jan_1965,...
jan_1966,jan_1967,jan_1968,jan_1969,jan_1970,jan_1971,jan_1972,jan_1973,...
jan_1974,jan_1975,jan_1976,jan_1977,jan_1978,jan_1979,jan_1980,jan_1981,...
jan_1982,jan_1983,jan_1984,jan_1985,jan_1986,jan_1987,jan_1988,jan_1989,...
jan_1990,jan_1991,jan_1992,jan_1993,jan_1994,jan_1995,jan_1996,jan_1997,...
jan_1998,jan_1999,jan_2000,jan_2001,jan_2002,jan_2003,jan_2004,jan_2005,...
jan_2006,jan_2007,jan_2008,jan_2009,jan_2010,jan_2011,jan_2012,jan_2013,...
jan_2014,jan_2015,jan_2016,jan_2017,jan_2018]
i tried a for loop but it gives output
like this
d =
jan_2012
d =
jan_2013
d =
jan_2014
d =
jan_2015

  7 Comments

kalyan acharya this code is not working matlab.JPG
strlength() and string() were introduced in R2016b. Which release do you use?
DELETEKARNAHAI what's that?
Either you have a malfunctioning matlab or else you are using an old matlab release and forgot to mention that.. There was exactly one release, R2016b, in which strings existed at all but " could not be used. If you are using any release before that, then it is not possible to assign strings to a variable because strings did not exist then; older releases only had character vectors stored in cell arrays.

Sign in to comment.

1 Answer

Answer by per isakson
on 4 Aug 2019
Edited by per isakson
on 4 Aug 2019
 Accepted Answer

Try
>> jan = arrayfun( @(num) sprintf('jan_%4d',num), (1958:2018), 'uni',false );
>> jan(1:3)
ans =
1×3 cell array
{'jan_1958'} {'jan_1959'} {'jan_1960'}

  2 Comments

If on a release where compose did not exist (i.e pre R2016b), then the undocumented sprintfc could be used:
jan = sprintfc('jan_%d', 1958:2018)
If compose is available:
jan = compose('jan_%d', 1958:2018)
sir you are great :)

Sign in to comment.