How to summarize this code?

2 ビュー (過去 30 日間)
BN
BN 2019 年 10 月 27 日
回答済み: Guillaume 2019 年 10 月 28 日
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};

採用された回答

Shubham Gupta
Shubham Gupta 2019 年 10 月 28 日
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!

その他の回答 (1 件)

Guillaume
Guillaume 2019 年 10 月 28 日
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

カテゴリ

Help Center および File ExchangeMultidimensional Arrays についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by