爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 9868|回复: 14

[程序设计] 如何求一个三维数组里其中一维的滑动平均

[复制链接]

新浪微博达人勋

发表于 2016-4-25 21:39:57 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
如何求全球海温360×180×110,求110年海温的滑动平均?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-4-26 08:46:25 | 显示全部楼层
Matlab做循环效率低,能避免就避免。
有时可以用矩阵计算,避免循环,比如这个:


%声明一个SST数组
SST = random('norm',14,10,[360 180 110]);

%% 用矩阵的思想做三点平滑
%三点滑动平均   SST(i) = SST(i-1)*0.25 + SST(i)*0.5 + SST(i+1)*0.25 ;
tmp1 = SST(:,:,1:110-2);
tmp2 = SST(:,:,2:110-1);
tmp3 = SST(:,:,3:110-0);

SST_AfterFilter = tmp1*0.25 + tmp2*0.5 + tmp3*0.25;
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2016-4-25 22:13:04 | 显示全部楼层
做个格点的循环,smooth函数求滑动平均
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-4-26 09:46:20 | 显示全部楼层
5inklbj 发表于 2016-4-26 08:46
Matlab做循环效率低,能避免就避免。
有时可以用矩阵计算,避免循环,比如这个:

可以手动点个赞么?反正我是点了~~

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-4-26 19:08:16 | 显示全部楼层
本帖最后由 abc111 于 2016-4-26 19:13 编辑
5inklbj 发表于 2016-4-26 08:46
Matlab做循环效率低,能避免就避免。
有时可以用矩阵计算,避免循环,比如这个:


你好,我需要做21点滑动平均,这样矩阵是不是写起来会很麻烦?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-4-26 19:11:35 | 显示全部楼层
oucdaqi 发表于 2016-4-25 22:13
做个格点的循环,smooth函数求滑动平均

for i=1:110;
cc(:,:,i)=smooth(tte(:,:,i),21);
end

tte是360X180X110的数据
对每个格点的110个数据做21年滑动平均,这样对吗?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-4-26 20:56:34 | 显示全部楼层
abc111 发表于 2016-4-26 19:08
你好,我需要做21点滑动平均,这样矩阵是不是写起来会很麻烦?

还好吧,tmp那部分可以写循环。另外,smooth和我用的平滑方法是不一样的,LZ可以搜搜,看看你究竟想要哪种。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-4-26 20:56:39 | 显示全部楼层
abc111 发表于 2016-4-26 19:08
你好,我需要做21点滑动平均,这样矩阵是不是写起来会很麻烦?

还好吧,tmp那部分可以写循环。另外,smooth和我用的平滑方法是不一样的,LZ可以搜搜,看看你究竟想要哪种。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-4-27 00:07:34 | 显示全部楼层
对格点做循环呀
smth_sst=zeros(360,180,110);
for i=1:360
      for j=1:180
            smth_sst(i,j,:)=smooth(sst(i,j,:),21);
      end
end
确实循环起来Matlab内存占用很大
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-11-28 11:33:27 | 显示全部楼层
请问楼主做出来了么
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表