MATLAB Answers

How to summarize this code?

1 view (last 30 days)
Behzad Navidi
Behzad Navidi on 27 Oct 2019
Answered: Guillaume on 28 Oct 2019
I have one cell in my workplace namly precips. this cell contains 34 3d arrays (please see picture attached). I want to have each 3d array as a variable in my workplace in order to do some other calculations. using this code, I achieve this purpose. but I want to know if any other shorter code available. I have attached the screenshot of my Matlab workplace and command line.
thank you
precip_1982 = precips{1, 1};
precip_1983 = precips{2, 1};
precip_1984 = precips{3, 1};
precip_1985 = precips{4, 1};
precip_1986 = precips{5, 1};
precip_1987 = precips{6, 1};
precip_1988 = precips{7, 1};
precip_1989 = precips{8, 1};
precip_1990 = precips{9, 1};
precip_1991 = precips{10, 1};
precip_1992 = precips{11, 1};
precip_1993 = precips{12, 1};
precip_1994 = precips{13, 1};
precip_1995 = precips{14, 1};
precip_1996 = precips{15, 1};
precip_1997 = precips{16, 1};
precip_1998 = precips{17, 1};
precip_1999 = precips{18, 1};
precip_2000 = precips{19, 1};
precip_2001 = precips{20, 1};
precip_2002 = precips{21, 1};
precip_2003 = precips{22, 1};
precip_2004 = precips{23, 1};
precip_2005 = precips{24, 1};
precip_2006 = precips{25, 1};
precip_2007 = precips{26, 1};
precip_2008 = precips{27, 1};
precip_2009 = precips{28, 1};
precip_2010 = precips{29, 1};
precip_2011 = precips{30, 1};
precip_2012 = precips{31, 1};
precip_2013 = precips{32, 1};
precip_2014 = precips{33, 1};
precip_2015 = precips{34, 1};

  0 Comments

Sign in to comment.

Accepted Answer

Shubham Gupta
Shubham Gupta on 28 Oct 2019
You can try to create structure for the data of different years:
for i = 1:length(precips)
precip.(['y',num2str(i+1981)]) = precips{i,1};
end
Now, if you want to access data with any specific year say 2000. You can just type:
Req_data = precip.y2000;
I hope it helps!

  0 Comments

Sign in to comment.

More Answers (1)

Guillaume
Guillaume on 28 Oct 2019
As demonstrated by the later questions (here and here), this was a very bad idea in the first place. Creating numbered or sequentially named variables always make the rest of the code more complicated not easier. You had a perfectly useful cell array, it is dead easy to iterate over it, there is no need to split it into separate variables:
for idx = 1:numel(precips)
dosomethingwith(precips{idx})
end

  0 Comments

Sign in to comment.


Translated by