爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 13322|回复: 26

[参考资料] 海洋大气数据处理中常用对矩阵操作函数介绍(会不断更新)

[复制链接]

新浪微博达人勋

发表于 2015-6-2 19:55:36 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 Aires 于 2015-8-20 17:09 编辑

如果你是初学者,并且你想用Matlab处理大气海洋的数据,那么相信这个帖子会对你有很大帮助。   
数据是以矩阵的形式排放,如四维数据矩阵(空间三维+时间一维)。Matlab对矩阵操作十分强大,而且很方便,有很多的函数可以很快的对矩阵进行你想要的操作。如:对矩阵的转置(一个 ' 就可以实现)。

1. reshape
reshape是对一个矩阵进行重新整形。
举个例子:
一个SST数据是360*180*360(经度*纬度*月)的矩阵,我想把最后一维的360个月变为12*30,这表示12个月*30年。因为之后经常求SST距平,这样分开可以方便的求距平。可以这样写:
sst=reshape(sst,[360 180 12 30]);
这样的sst就是四维的矩阵了,当然数据的大小是不能变的,否则会报错。
如果我们想求逐月的距平,上面这样处理的好处就体现出来了:
sst_mean=mean(sst,4)  % 这是求sst逐月的气候态
sst_anom=zeros(360,180,12,30);   % 预先生成sst距平的矩阵
for i=1:30
    sst_anom(:,:,:,i)=sst(:,:,:,i)-sst_mean;  %  循环求出sst距平
end

2. flipud, fliplr
这两个函数是对矩阵进行左右翻转(fliplr)和上下翻转(flipud)。
举例:
a=
    1   2   3
    4   5   6
fliplr(a)=
    3   2   1
    6   5   4
flipud(a)=
    4   5   6
    1   2   3
由于数据的格式往往不是我们想要的,我们会经常对矩阵做转置('),上下翻转,左右翻转等,变成我们想要的顺序。这两个函数可以方便的做到这一点,而不需要做循环。

3. is开头的函数,如:isnan。
isnan:如果元素是NaN,则结果是真(逻辑值=1)。
也就是说当一个矩阵a,里面的元素有一些是nan时,isnan(a)会返回一个和a同样大小的逻辑矩阵,矩阵中等于1的位置表示是nan,0的位置不是nan。
我们有时会对资料矩阵中的nan设置为其他的数,这时如果用其他的函数(比如。。。==nan)是做不到的,好的方法是用isnan。
比如:sst矩阵中有nan,想将nan的位置替换为-999。程序如下:
sst(isnan(sst))=-999;
一条代码就可以了。

4. squeeze
举例来说:如果一个矩阵SST是360*180*1*30,用squeeze函数就可以将第三维的1去掉,即
sst=squeeze(sst); % 此时sst矩阵大小为:360*180*30
这可以很方便的将没用的一维去掉。
经常我们用mean将某一维平均后会有*1*存在,这时就可以用squeeze。
注意:如果mean数据的最后一维,这个1会自动去掉。
比如:sst:360*180*12*30,
mean(sst,4);  % 得到的sst是360*180*12,最后一维的1会自动去掉的,所以不用squeeze掉。

如果大家有自己觉得常用的矩阵操作函数,也麻烦在下面留言,一块和大家分享~
该帖中的函数会不断更新~








评分

参与人数 2金钱 +25 贡献 +9 体力 +80 收起 理由
二爷名声在外 + 15 + 5
lqouc + 10 + 4 + 80

查看全部评分

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

新浪微博达人勋

 成长值: 32430
发表于 2015-6-3 08:08:45 | 显示全部楼层
小A加油哦~不过这些都是数据处理通用的基本操作,希望加入一些比较有特色的…
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-6-3 09:31:11 | 显示全部楼层
二爷名声在外 发表于 2015-6-3 08:08
小A加油哦~不过这些都是数据处理通用的基本操作,希望加入一些比较有特色的…

以后再慢慢添加吧
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-6-3 09:31:22 | 显示全部楼层
二爷名声在外 发表于 2015-6-3 08:08
小A加油哦~不过这些都是数据处理通用的基本操作,希望加入一些比较有特色的…

以后再慢慢添加吧
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-6-3 21:50:21 | 显示全部楼层
初学者表示不懂,慢慢学习
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-6-3 23:37:26 | 显示全部楼层
哈哈哈,reshape那个方法自己之前也想到了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-6-4 09:02:27 | 显示全部楼层
这类帖子很好啊,可以交流
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-6-4 09:54:27 | 显示全部楼层
太给力了。。。好人啊
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-7-9 19:11:08 | 显示全部楼层
太实用了
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2015-7-10 09:09:56 | 显示全部楼层
非常实用,期待更新,谢谢!
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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