经常需要绘图,但常用的绘图工具还是GrADs,因此要写一份二进制文件。(后期应该会转向NCL的吧)

需要注意的是,GrADs所需的二进制文件存储循环为经度x,纬度y,高度z,变量1,变量2,…,时间t,因此写二进制文件是需要按照这个顺序来写。本文中以一个变量即1000hPa等压面上的位势高度为例,多个变量使用循环尝试即可。

导航

  • matlab读取文本文件
  • matlab写二进制文件
  • matlab读二进制文件
  • python读取文本文件
  • python读二进制文件
  • python写二进制文件

matlab读取文本文件

文本文件指的是micaps类型数据文件(实际有29行53列的数据,但文件中每行最多放6个数据),内容格式如下:


◆需要注意的有:

  1. 直接使用textread命令后,读取的数据是按行列读取的,即有多少行多少列就出来有多少行列,取最大长度,不足的自动用0补齐;
  2. 需要读取的文件是自北向南、自西向东排布的,因此上下需要颠倒交换。

读取代码如下:

data=textread('data\height\1000\13052520.000','','headerlines',4);
% 上面的  'headerlines',4  是指前面4行跳过不读取
% 读取的数据暂时保存在 data 里,下面是使用自定义函数进行整合
% 整合后的数据保存在h1000数组里
h1000=dread(data);h1000=change(h1000);% 整合数据,使成所需的行列排布
function res=dread(data)
res=[];
% 一共是有29行
for ii=1:29tem=data((ii-1)*6+1:(ii*6),:);dd=[];for jj=1:6dd=[dd,tem(jj,:)];endres=[res;dd];
end
% 一共有53列,把54列之后的0数据清掉
res(:,54:end)=[];% 将南北方向调换
function res=change(data)
[lin,col]=size(data);res(lin,col)=0;
for ii=1:linres(ii,:)=data(lin-ii+1,:);
end
end

读取的结果如下:(注意是原数据上下倒过来的)

matlab写二进制文件

在读取文本文件,并进行了处理后,需要将其写入二进制文件。

◆需要注意的有:

  1. 直接把数组写入文件,是一列一列地来写入的,因此若要保持行列不变,需要对矩阵进行转置处理;
  2. 在使用fwrite时,最好要求格式为’float’ 以保证写入不会出错。

写入代码如下:

fid=fopen('data\1000.grd','wb');
% 注意这个数据h1000后面需要有转置
fwrite(fid,h1000','float');
fclose(fid);

matlab读二进制文件

◆需要注意的有:

  1. 和上面类似,二进制数据排放时,是把数据读取,一列一列地来放的,上面我们把矩阵一行的数据转竖后放入二进制文件,现在读取时需要倒过来,行列先交换(原为29行、53列的数据,读取时读到大小为53行、29列的数组里),后进行转置;
  2. 读取格式为‘float’,一定不能写错。

程序如下:

fid=fopen('1000.grd','rb');
h1000=fread(fid,[53,29],'float');
h1000=h1000';
fclose(fid);

python读取文本文件

参考之前写的文章:
利用python读取micaps文件

python读二进制文件

在前文使用matlab创建好二进制文件后,使用python读取。

代码如下:

import struct
import numpy
f1 = open('1000.grd', 'rb')
num = numpy.zeros((29, 53))
# 这里是外循环29再内循环53,就是先把前53个数据读取作为第一行,
# 再依次往下,不像matlab一样需要转置操作
for ii in range(29):for jj in range(53):data = f1.read(4)num[ii][jj] = struct.unpack("f", data)[0]# print(num[ii])
f1.close()

读取后输出结果如下:

内容和上面一张matlab的图是一样的。

在这个部分要感谢此篇文章提供的参考:
使用Python读取二进制文件

python写二进制文件

同样,根据上一节读取的内容,将数据重新写入二进制文件中。

代码如下:

f2 = open('00.grd', 'wb')
# 与上一节类似,先写入一行53个的数据,再一行一行地来写
for ii in range(29):for jj in range(53):data = struct.pack("f", num[ii][jj])f2.write(data)
f2.close()

得到的文件就和原始的matlab写出来的文件一样。

最后,本文使用的数据已经分享出来,点击链接即可下载,无需c币。数据下载

利用matlab和python读micaps格式文件、读写二进制文件相关推荐

  1. Python:pmml格式文件的简介、安装、使用方法(利用python将机器学习模型转为Java常用的pmml格式文件)之详细攻略

    Python:pmml格式文件的简介.安装.使用方法(利用python将机器学习模型转为Java常用的pmml格式文件)之详细攻略 目录 pmml格式文件的简介 1.PMML结构 pmml安装 pmm ...

  2. python操作xlsx格式文件

    python操作xlsx格式文件 一.准备工作 二 .xlrd库读取 三.pandas库读取 1.安装pandas: pip install pandas 2.代码如下 3.操作行列 一.准备工作 二 ...

  3. csv加header python_用python处理csv格式文件

    用python处理csv格式文件 在各种平台上获取数据时,我们常常获得的是csv格式的文件.csv格式是一种逗号分隔值的文件格式,它并不是非常reader-friendly.所幸,python标准库中 ...

  4. matlab rawdata,利用 Matlab 和 Dcraw 处理数码相机 Raw 文件的完整流程 _ Capbone.pdf

    利用 Matlab 和 Dcraw 处理数码相机 Raw 文件的完整流程 _ Capbone 2015/10/20 利用 Matlab 和 Dcraw 处理数码相机 Raw 文件的完整流程 | Cap ...

  5. python操作excel格式文件

    python操作excel格式文件 1. 读数据 2. 写excel 3.操作整合 1. 读数据 安装包 pip install openpyxl 导包 from openpyxl import lo ...

  6. AI加速信息和知识获取速度,使用Python对MD格式文件和HTML网页进行内容摘要,2023年4月AI网页内容摘要工具大全

    在信息时代,获取知识变得至关重要.然而,有时候信息的数量是如此之大,以至于人类无法有效处理.这就是人工智能(AI)能够做出贡献的地方.通过AI,我们可以快速地找到并理解文章的核心观点和重要信息.下面将 ...

  7. python用os.system打开wav文件_使用python读取wav格式文件

    ** 使用python读取wav格式文件 ** - 基本概念 [采样频率] 即取样频率, 指每秒钟取得声音样本的次数.采样频率越高,声音的质量也就越好,声音的还原也就越真实,但同时它占的资源比较多.由 ...

  8. python获取的html转换为json,python读取XML格式文件并转为json格式

    XML文件如下: 红楼梦书名> 曹雪芹作者> 描述贾宝玉和林黛玉的爱情故事主要内容> 人民文学出版社出版社> 图书> 一.python读取XML格式文件代码: impor ...

  9. 利用MATLAB将图片转换成coe文件、TXT文件、mif文件、bin文件

    利用MATLAB将图片转换成coe文件.TXT文件.mif文件 利用MATLAB将图片转换成coe文件 利用MATLAB将图片转换成txt文件 利用MATLAB将图片转换成mif文件 利用MATLAB ...

最新文章

  1. TensorFlow2.0正式版发布,极简安装TF2.0(CPUGPU)教程
  2. 警方:“外卖员因获差评杀人”为假消息 造谣者被刑拘
  3. dpo指标详解买入绝技_巴菲特点破A股市场:5年前5178点买入5万元上峰水泥股票,持有到现在会有怎样的收益?从贫穷到富有...
  4. TextMate 通用快捷键
  5. Java黑皮书课后题第10章:*10.26(计算器)修改程序清单7-9,接收一个字符串表达式,其中操作符和操作数由0到多个空格隔开
  6. String和enum的互相转换
  7. android 解决getColor()方法过时
  8. DVWA--File Inclusion(文件包含)--四个级别
  9. 重现江湖!大数据高并发——架构师秘籍
  10. .Net 中的继承知识点
  11. WebView 文档 翻译
  12. cve-2014-7911安卓提权漏洞分析
  13. clob字段怎么导出_人人都会遇到的问题:Java 如何优雅的导出 Excel~
  14. 2022年国产操作系统发展现状
  15. reuntion 题解
  16. Topaz Video Enhance Al视频无损放大软件常见问题指南
  17. 计算机键盘最小化,电脑按哪个键可以使窗口最小化
  18. 高数篇:02费马定理
  19. CAD转PDF其实很简单,掌握这4种方法就可以
  20. 点云obb盒显示 python

热门文章

  1. 频率准确度和稳定度的定义与测试方法
  2. 用python编写一个简单的计算器
  3. 流量复制工具gor使用简介
  4. ARM Generic Timer
  5. 中国特殊钢行业市场供需与战略研究报告
  6. 2012联邦选举委员会数据库
  7. 集合基本概念及其使用
  8. 读《远见:如何规划职业生涯3大阶段》
  9. 2017年CSDN博客排名前15名强(历史上最强15名)
  10. 【微信小程序入门到精通】— 小程序的 API 到底是个啥