爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
12
返回列表 发新帖
楼主: miqiuqiu123

[程序设计] matlab读nc数据维数的问题

[复制链接]

新浪微博达人勋

发表于 2014-8-3 00:09:48 | 显示全部楼层
miqiuqiu123 发表于 2014-8-2 21:06
但是我的问题是维数个数不一样,用permute好像没法解决

不好意思啊,没看清楚你的问题。你的第二种读法里Y是四维,但有两维应该是只有一列(行)的,没有意义,你用Y_n=squeeze(Y),处理一下获得的四维Y,是不是就得到二维的了。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-8-4 16:40:40 | 显示全部楼层
wkjhwkjh 发表于 2014-8-3 00:09
不好意思啊,没看清楚你的问题。你的第二种读法里Y是四维,但有两维应该是只有一列(行)的,没有意义, ...

好像还是不对,用squeeze(y)后还是为四维,而且我还发现一个问题,uwnd=ncread('f:\hgt.mon.mean.nc','hgt',[1 1 1 1],[1 1 8 5],[1 1 1 1]);读出数据后uwnd(:,:,1,1)是1X1的矩阵,而uwnd=ncread('f:\hgt.mon.mean.nc','hgt',[10 10 1 1],[10 10 8 5],[1 1 1 1]);读出数据后uwnd(:,:,1,1)是5X5的矩阵,但是之前设定的[10 10 1 1],[10 10 8 5],[1 1 1 1])不相符啊
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-8-4 16:49:51 | 显示全部楼层
wkjhwkjh 发表于 2014-8-3 00:09
不好意思啊,没看清楚你的问题。你的第二种读法里Y是四维,但有两维应该是只有一列(行)的,没有意义, ...

sorry,你的做法是对的,我自己理解错了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-4-5 20:52:15 | 显示全部楼层
wkjhwkjh 发表于 2014-8-2 11:33
新版本的nc读法读到的数据是[Z Y X],但旧版本的nc读法读到的数据是[X Y Z]. 用permute(x,[3,2,1])处理一下 ...

这个语句收下了。哈哈,之前一直不知道用这个简单的命令。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-12-15 10:41:23 | 显示全部楼层
来解释下你为什么第一次读的是2维,第二次读的是4维。
ncread的函数的解释是这样用的。
ncread(source,varname,start,count,stride)
source是文件,varname是函数名,重点是后3个。
start指的是起点,是什么意思呢?假设变量本身是一个3维数组【x y z】x=100,y=100,z=100.那么start设置成【1 1 1】,意思就是x,y,z三个方向都是从第1个格点开始读;如果设置成【1 5 10】那么就是x方向从第1个格点读,y方向从第5个格点读,z方向从第10个格点读.这个一般大家都懂。
count的意思是什么呢?并不是终点的意思,count的意思是你要读的总共的格点数。还是那个3维的变量数组,假设从【1 1 1】读起,如果我仅读取平面z=3的x方向5个点,y方向10格点,那么count的设置应该是【5 10 1】,意思是x方向读取了5个点,y方向读取了10个点,z方向只读取1个平面。所以读取出来是个2维数组。这么来看,很明显你的第一个count【1 1 8 5】是二维的,第二个count【10 10 8 5】是四维的,所以你读取出来一个是二维,一个是四维。
最后的stride是步长,如果设置是【1 1 1】,那么你就是三个方向,逐个点读取。如果设置成【2 2 1】意思就是x,y方向是隔一个点读一个,z方向是逐个读取。因此,对于变量数组【100 100 100】,如果起点是【1 1 1】,总数是【5 5 5】,如果不是逐个读取,步长设置不当会超出数组规模的。
再重说一遍,count的意思是读取的格点总数(包含了维数信息),而不是读取的终点值。
密码修改失败请联系微信:mofangbao
回复 支持 2 反对 0

使用道具 举报

新浪微博达人勋

发表于 2015-12-15 11:07:19 | 显示全部楼层
你的读取有问题
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-6-5 13:02:24 | 显示全部楼层
谢谢奉献谢谢谢谢分享谢谢
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-6-12 21:48:30 | 显示全部楼层
{:eb502:}
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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