爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4438|回复: 2

[程序设计] Matalb 读取数据奇怪问题

[复制链接]

新浪微博达人勋

发表于 2016-8-13 20:34:19 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 无极 于 2016-8-13 20:43 编辑

各位Matlab的大侠!

       小弟自己先用Frotran处理的unformatted, direct数据,使用Matlab先前画了几张图,没有什么问题。先前的一段程序代码,维度(360*180*18)
clc;clear;
Path = 'E:/hyc_pic/exp01.4/';
name = 'msshtsduv_woa';
fid  = fopen([Path,name,'.grd'],'r');
lon = linspace(0.5, 359.5, 360);
lat = linspace(-89.5, 89.5, 180);

level = [10, 20, 30, 50, 75, 100, 125, 150, 200, 250, 300, 400,...
       500, 600, 700, 800, 900, 1000];
time  = [1];
def   = -1.0e+14;;
[tt,nx] = size(lon);
[tt,ny] = size(lat);
[tt,nz] = size(level);
[tt,nt] = size(time);
nl      = 1;
nv      = 6;0;
%temp = ones();
jump_distance = nx*ny*nl*nv*4;
fseek(fid,jump_distance,'bof');
data = fread(fid,nx*ny*nz,'real*4');
data(data == def)    = NaN;
temp = reshape(data,nx,ny,nz);

           但这次,增加了维数(1440*720*180),结果一直报错,
错误使用 reshape
要执行 RESHAPE,请勿更改元素数目。
出错 hyc2bin_lat (line 24)
temp = reshape(data,nx,ny,nz);"
         我查看了data的读取维度是11051008x1 double, 并不等于nx*ny*nz,而之前的那个data大小是等于nx*ny*nz,推测可能是matlab对于读取数据大小有限制?
但没办法解决此问题,还望各位Matlab高手帮忙指点小弟一二啊!
不知道有没有把问题描述清楚,非常期待各位大虾的教会!  跪求!!!

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

新浪微博达人勋

发表于 2016-8-14 22:39:43 | 显示全部楼层
对于grd我一般都是这么读的
fid = fopen('C:\Users\hp\Desktop\BMA\30a\BMA.grd','rb');
data = fread(fid,inf,'float');
data1(:,:,:)=reshape(data,144,73,240);
希望可以帮到你
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-8-22 16:46:46 | 显示全部楼层
雾失流年 发表于 2016-8-14 22:39
对于grd我一般都是这么读的
fid = fopen('C:%users\hp\Desktop\BMA\30a\BMA.grd','rb');
data = fread(fi ...

谢谢了,grd是我用普通二进制输出的和一般的.dat一样,问题已经解决了,多谢!!
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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