爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
楼主: Aires

[程序设计] Matlab处理后的数据写为二进制用于GrADS画图——fwrite函数使用

  [复制链接]

新浪微博达人勋

发表于 2017-5-30 09:11:27 | 显示全部楼层
之前看的时候不认真,没注意到grads读取数据是从南到北,除了二十几张图后,突然发现有点问题,没有用Flipud上下颠倒一下,结果,现在要花大时间改了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-5-30 10:41:17 | 显示全部楼层
skylark 发表于 2017-5-30 09:11
之前看的时候不认真,没注意到grads读取数据是从南到北,除了二十几张图后,突然发现有点问题,没有用Flip ...

没关系,注意GrADS数据存放的格式是很重要的。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-5-30 14:14:45 | 显示全部楼层
Aires 发表于 2017-5-30 10:41
没关系,注意GrADS数据存放的格式是很重要的。

我发现不同的数据比如hadley sst数据要经过不同的转置或者翻转
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-5-30 15:29:58 | 显示全部楼层
skylark 发表于 2017-5-30 14:14
我发现不同的数据比如hadley sst数据要经过不同的转置或者翻转

对的,HadISST的数据和其他的SST资料不一样。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-10-23 19:07:00 | 显示全部楼层
学长 我想问下 我这段程序的问题,画出来的图明显在东西方向上有偏移。

fid=fopen('E:\uwnd850_4.dat','w');

for k=1:12;
    for j=1:27;
        for i=1:144;
            count= fwrite(fid,uwnd850_4(i,j,1,k),'float');
        end
    end
end
fclose(fid);

维度是144*27*12,我然后用grads画,跟我直接用matlab画的对比发现东西方向上偏了很多

具体的问题描述在我发问的一个帖子上:
http://bbs.06climate.com/forum.p ... &extra=page%3D1
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-10-23 19:16:54 | 显示全部楼层
风叶ele 发表于 2017-10-23 19:07
学长 我想问下 我这段程序的问题,画出来的图明显在东西方向上有偏移。

fid=fopen('E:%uwnd850_4.dat',' ...

我对其他数组有做了尝试,利用相同的循环思路,发现越往高层偏移的越厉害,比如1000hPa层上偏移的很小  850hPa上偏的就很大了,应该还是这个循环写入的有问题吗???
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-10-24 12:06:01 | 显示全部楼层
风叶ele 发表于 2017-10-23 19:16
我对其他数组有做了尝试,利用相同的循环思路,发现越往高层偏移的越厉害,比如1000hPa层上偏移的很小  8 ...

是不是fwrite的时候,最好只是写入一个二维数组(把高度层和时间层固定,仅保留经纬度的变化)呢?

我试过,如果只导入仅含经纬度信息的二维数组,就不会出现偏移。如果导入一个含经度 纬度 高度3维的数组,低层的偏移小,高层的偏移大;如果导入一个含经度 纬度  时间  高度 4维的数组,连低层的都差得很大。。。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-12-28 17:42:44 | 显示全部楼层
本帖最后由 2015sysu 于 2017-12-28 17:51 编辑

楼主~我是已经用matlab把结果算出来了而且也用matlab出图。但是因为想在图上叠加上风场,所以需要用到grads。刚刚在论坛里发问之后,才搜到您的帖子。

想请教一下,是要自己先建立一个文件吗?直接用open?‘w’是什么?
fid=fopen('filename','w');
count=fwrite('fid',sst,'float32')  % 注意sst是用flipud和转置后的数据矩阵
fclose(fid)

http://bbs.06climate.com/forum.p ... 58112&fromuid=60928
(出处: 气象家园)

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

新浪微博达人勋

发表于 2018-3-22 22:07:55 | 显示全部楼层
我发现在matlab2017a中运行时作者原文:
fid=fopen('D:\Data\85data_creat\xnpr1.bin','w');
fwrite('fid',allzhuan,'float32');  
fclose(fid);
的第二行中fid两边的单引号要去掉,不然提示出错:
Error using fwrite
Invalid file identifier. Use fopen to generate a valid file identifier.
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-3-23 03:14:04 | 显示全部楼层
启元YIN 发表于 2018-3-22 22:07
我发现在matlab2017a中运行时作者原文:
fid=fopen('D:\Data\85data_creat\xnpr1.bin','w');
fwrite('fi ...

Hi, thanks for pointing it out! I corrected it.
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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