创建观察数组

1次观看(过去30天)
卡洛塔DENTICO
卡洛塔DENTICO 2021年8月4日
评论道: 里克 2021年8月4日
大家好,
也许这是一个非常愚蠢的问题,但我正在努力解决它。
我有一系列的观察记录 pt_mean_lev1_1” 到’ pt_mean_lev1_348” (见下图),我想做一个数组,他们是a = 1x348。我该怎么做呢?
非常感谢!
3评论
卡洛塔DENTICO
卡洛塔DENTICO 2021年8月4日
Lon = ncread(“topaz_V4_myocean_arctic_grid1to8_da_class1_19910115.nc”“经”);
Lat = ncread“topaz_V4_myocean_arctic_grid1to8_da_class1_19910115.nc”“纬度”);
Fram = (lon>=0 & lon<=20 & lat>=76 & lat<=80);
K = 1:348
eval ([“pt_lev1_”num2str (k),' =重塑(pt_lev1(:,:,'num2str (k),”),[],1),“]);
eval ([“pt_mean_lev1_”num2str (k),“=意味着(pt_lev1_”num2str (k),”(弗拉姆号:),1,“omitnan”);“]);
结束

登录评论。

接受的答案

Sulaymon Eshkabilov
Sulaymon Eshkabilov 2021年8月4日
下面是一个动态命名变量并从工作空间获取变量值的可行解万博 尤文图斯决方案。
A = [];
2 = 1:348
Var = strcat(“pt_mean_lev1_”num2str (ii));
一个= [a, eval (Var)];
结束
3评论
里克
里克 2021年8月4日
在截图中,你可以看到每个元素的元素数量。像这样动态增长数组(而不是预先分配)会导致糟糕的性能。我也不会教人们使用 eval 作为解决方案。正如本文中已经证明的那样,这是一个麻烦的来源。
k = 500000; N = 100;%N=348比55秒的极限用时短
抽搐
A = [];
2 = 1: N
a =[,兰德(k, 1)];
结束
toc
运行时间为15.427005秒。
抽搐
a = 0 (k,N);
2 = 1: N
(:,(二)=兰德(k, 1);
结束
toc
运行时间为0.513869秒。

登录评论。

更多答案(2)

卡洛塔DENTICO
卡洛塔DENTICO 2021年8月4日
你是说这里吗?
基本上,这些是从NetCDf文件中提取的全球特定地区的月平均温度空间平均值,在29年的每个月里(我总共有348个平均值,即12x29)。
我需要这些平均值,因为我需要计算冬季月份(从10月到4月)和夏季月份(从5月到9月)的时间序列,并计算29年来冬季和夏季的平均值。
所有这些都是计算一个月与整个时期冬季的异常情况。
1评论
Sulaymon Eshkabilov
Sulaymon Eshkabilov 2021年8月4日
我说的是另一条线,不是这里。一个帖子里有两个令人困惑的问题。

登录评论。


里克
里克 2021年8月4日
不应该动态地命名变量。为什么在读取时不将它们存储在数组中?下面的代码有什么问题?
Lon = ncread(“topaz_V4_myocean_arctic_grid1to8_da_class1_19910115.nc”“经”);
Lat = ncread“topaz_V4_myocean_arctic_grid1to8_da_class1_19910115.nc”“纬度”);
Fram = (lon>=0 & lon<=20 & lat>=76 & lat<=80);
pt_lev1_ = 0(大小(pt_lev1 1) *大小(pt_lev1, 2), 348);
K = 1:348
Pt_lev1_ (:,k) =重塑(pt_lev1(:,:,k),[],1);
结束
pt_mean_lev1_ =意味着(pt_lev1_(弗拉姆号,1:k), 1,“omitnan”

标签

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!