爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 9831|回复: 18

[程序设计] [已经解决]用MATLAB打开nc数据是出现的问题

[复制链接]

新浪微博达人勋

发表于 2019-11-11 11:31:33 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 东水兽 于 2019-11-15 21:54 编辑

为什么我用MATLAB读取nc数据会出现图中这种报错,数据应该是没有问题的,不知是哪里出了问题。

这是代码:
ncFilePath = 'C:\Users\Administrator\Desktop\毕业生降水预报\precip.mon.mean.1x1.nc';

precip = ncread(ncFilePath,'precip');           %          获取降水量变量数据

出错的位置:
错误使用 netcdflib
NetCDF 库在执行 'getVarFloat' 函数期间遇到错误 - 'HDF error (NC_EHDFERR)'。

出错 netcdf.getVar (line 136)
    data = netcdflib(funcstr,ncid,varid,varargin{:});

出错 internal.matlab.imagesci.nc/read (line 605)
                data = netcdf.getVar(gid, varid);

出错 ncread (line 58)
vardata = ncObj.read(varName, varargin{:});

出错 dataprocession_precip (line 20)
precip=ncread(ncFilePath,'precip'); % 获取降水量变量数据

(http:)//pan.baidu.com/s/1xjafH9KUvb9tEh4qeRymjQ
提取码:am46



                               
登录/注册后可看大图




是我自己的数据出了问题,应该是下载的时候网络不是很稳定导致的!!!感谢大家的回复



                               
登录/注册后可看大图










QQ截图20191111105440.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2019-11-12 13:53:25 | 显示全部楼层
filegrid=dir([trackgrid,'a.nc']);   
strgrid=filegrid.name;
strgrid1=strcat(trackgrid,strgrid);
fidgrid=netcdf.open(strgrid1,'NOWRITE');
vidx=netcdf.inqVarID(fidgrid,'lon2d');
x=netcdf.getVar(fidgrid,vidx,'double');
netcdf.close(fidgrid);

你试试这种方式能否打开
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2019-11-11 11:56:35 | 显示全部楼层
路径中包含中文或太长  matlab可能会报错    变量名字错了也会报错  ncdisp(file)看文件具体属性(包括变量名)
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-11-11 12:10:03 | 显示全部楼层
ゼヅ欢チニ 发表于 2019-11-11 11:56
路径中包含中文或太长  matlab可能会报错    变量名字错了也会报错  ncdisp(file)看文件具体属性(包括变 ...

1.路径长含中文这个好像前几个变量名称都可以读取,应该不是这个原因
2.我查看了一下,变量名称没有错
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-11-12 21:09:27 | 显示全部楼层
ゼヅ欢チニ 发表于 2019-11-12 13:53
filegrid=dir([trackgrid,'a.nc']);   
strgrid=filegrid.name;
strgrid1=strcat(trackgrid,strgrid);

您好,我想问一下我用您的解决方法来试了一下,发现出现同样的错误,并在x=netcdf.getVar(fidgrid,vidx,'double');这一句上有报错,该怎么解决。而且我在读取nc文件的时候没有报错。谢谢
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-11-13 11:05:07 | 显示全部楼层
你可以把nc发出来看看是不是nc的问题。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-11-13 11:36:20 | 显示全部楼层
nuist沙卡拉卡 发表于 2019-11-12 21:09
您好,我想问一下我用您的解决方法来试了一下,发现出现同样的错误,并在x=netcdf.getVar(fidgrid,vidx,' ...

不好意思,我一般就用ncread以及netcdf.getVar读取,暂时没有发现两种都会报错的时候,所以我也不太清楚报错的具体原因
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-11-13 16:24:08 | 显示全部楼层
看看纬度可以读吗
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-11-14 14:15:14 | 显示全部楼层
用ncinfo看一下啊变量名称,估计是变量名称有误。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-11-15 14:07:15 | 显示全部楼层
910590395 发表于 2019-11-14 14:15
用ncinfo看一下啊变量名称,估计是变量名称有误。

变量名称没有问题
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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