作为一个序言,我是相当缺乏经验,所以我的术语可能是错的,因此,为什么我找不到任何东西时,搜索论坛。
我有一个巨大的大气高度数据数组(hgt) 1900年包含在一个netcdf文件中。从概念上讲,我的项目范围很简单,创建一个高度气候学(一年中每一天的每个网格点的平均高度值)在两个特定的压力水平上,涉及141年的数据(每个年度数据文件都有相同的格式)。
hgt_1900 = ncread('hgt.1900.nc','hgt')
n = numel(hgt_1900)
n = 143488800
size(hgt_1900)
ans = 180 91 24 365尺寸是经度、纬度、气压级和时间(天数)。考虑到数组的大小,我认为在某一天将数据限制在一个压力级(例如:4级)是可行的。
hgt_1900_4_Day1 = hgt_1900(1:180, 1:91, 4, 1)这将返回一个180x91单变量,这是很棒的!然而,当我到达hgt_1900_4_Day3时,我发现必须有一种方法来实现这个过程的自动化。所以这就是我试过的
for day = 1:365
hgt_1900_4_Day'day' = hgt_1900(1:180, 1:91, 4, 'day')
day = +1
end
Error: File: Height850.m Line: 2 Column: 20
Unexpected MATLAB expression.有人能说明如何纠正这一意想不到的说法吗?我尝试过(可能不正确)使用genvarname函数,它正确地生成变量名,但是保持4D变量格式,并且没有得到正确的天数据:
for day = 1:356
t = hgt_1900(1:180, 1:91, 4, 'day');
v = genvarname('hgt_1900_4_Day', who);
eval([v ' = t'])
end
size(hgt_1900_4_Day1)
ans = 180 91 1 3
size(hgt_1900_4_Day350)
ans = 180 91 1 3假设我能让上面的内容发挥作用,我计划为每年的数据运行这个脚本。然后通过平均hgt_1900_4_Day50、hgt_1901_4_Day50等建立气候学.
考虑到141年的数据(20231920800元素)的累积大小。我觉得效率是至关重要的,所以请分享任何其他,更有效的方式到达同一个地方!
非常感谢!
发布于 2014-10-08 15:57:34
我哥哥帮我找到了下面的代码,这做了我需要它做的事情!
for year = 1900:2012
baseVar = genvarname(['hgt_' int2str(year) '_4_Day'])
% Load hgt into memory
for day = 1:365
t = hgt(1:180, 1:91, 4, day);
v = genvarname([baseVar int2str(day)]);
eval([v ' = t;']);
end
clear hgt;
end谢谢你的帮忙!
https://stackoverflow.com/questions/26196960
复制相似问题