周二! 我们又见面了! 过去几周的主题是,对于数据,我们如何读写数据文件? 气象中的特殊数据如何处理? 使用txt和nc文件作为介绍,欢迎指正~
1号
基础常识
在读写文件的时候,有一些与读取数据相关的知识是由c语言衍生出来的,而且大多是相通的。
1.1 文件打开方式
第一步读取数据! 首先打开一个数据文件。 代码中可以根据需要单独或组合使用以下符号来使用文件。
开放模式
执行操作
'r'
以只读方式打开文件(默认)
'w'
打开文件进行写入将覆盖现有文件
'X'
如果文件已存在,使用此模式打开将导致异常
'A'
以写模式打开,如果文件存在则追加到末尾
'b'
以二进制补码模式打开文件
't'
以文本模式打开(默认)
'+'
可读写模式(可添加其他模式)
'U'
通用换行符支持
例如,小明想以二进制补码的形式打开一个现有文件,读入数据后,然后继续向文件中写入数据,然后在表中查找对应的符号,他可以:
f = fopen('write_data.txt','ab+')
1.2 低格式文本
将处理后的数据输出为其他格式的文件时,要特别注意文件的写入方式。
为了将数据转换为文本输出并控制其格式,小写运算符可以与常见的转换函数(例如 num2str、sprintf)结合使用。 该运算符控制符号、对齐、有效数等。 典型用途包括用于显示和输出文件的文本。
转换说明符:
占位符,将被周围表达式的值(变量、常量、数字、字符串、加法、减法、乘法和除法等)替换。
象征
阐明
%C
小写字符及其 ASCII 代码
%s
小写字符串
%d
小写整数
%o
低格式无符号八的补码数
%X
低格式无符号十六进制数
%X
小写无符号十六进制数(小写)
%F
低级定点数,小数点后的精度可以指定
%e
带科学记数法的低格式定点数
%E
功能与%e相同,科学记数法中定点数降低
%G
根据值的大小决定使用%f还是%e
%G
与%g功能相同,根据值的大小使用%F或%E
如果没有子类型数组,则转换字符 %o、%x、%X 和 %u 将输入数据视为整数。 要将输入数据处理为浮点值并将其转换为八补码、十补码或十六补码表示形式,请使用:
输入数据是双精度浮点值,而不是无符号整数。 例如,要以十六进制补码格式输出双精度值,请使用类似 %bx 的内容。
输入数据是单精度浮点值,而不是无符号整数。
精度和字符间距设置:
例如,在运算符%7.2f中,7代表数组的长度php读取excel文件,2代表精度。 根据本部分前述内容,进行pi的格式转换:
txt = sprintf('%7.2f',pi)
得到了答案:
标志
可选,控制输出文本的其他格式:
特点
阐明
例子
加(-)
左对齐数组中转换后的参数。
%-5.2天
减号 (+)
对于数值,始终输出前导符号字符(+ 或 -)。
对于文本值,右对齐数组中转换后的参数。
%+5.2天
%+5秒
空间
在值之前插入空格。
%5.2f
零 (0)
用零代替空格填充。
.2f
井号(#)
更改选定的值转换:
· 对于%o、%x 或%X,将输出0、0x 或0X 前缀。
• 对于%f、%e 或%E,即使精度为零,也会输出小数点。
• 对于%g 或%G,不去除尾随零或小数点。
%#5.0f
另外,在实际编程中,经常使用通配符来控制输出文件的格式:n是换行符,t是水平制表符,表示同一行内的间隔,类似于正常打字时使用的 Tap 键的功能。
2号
txt文件的读写
可能用到的函数:fopen、fwrite、fread、fscanf、importdata、load、save、textread等(csv、xls等文件的读取方法有类似的特殊函数,可以通过搜索引擎或MATLAB官网查阅)文件~)
读写方法一:
load('file.txt','r')
save('filename.txt',a)%a为需储存的变量名
读写方法二:
fid = fopen('filename.txt')
[ ]=fscanf(fid,format,size)
其中,A用于存储读取的数据,COUNT返回读取的数据元素的个数,fid是文件句柄,format用于控制读取数据的格式,size是一个选项,决定了读取数据的排列方式可以取以下值:N(将N个元素读入列向量)、inf(读入整个文件)、[M,N](将数据读入M×N矩阵,并将数据存储在列中)
fprintf函数可以将数据以指定格式写入文本文件。 其调用格式为:
fprintf(fid,format,A)
fcolse(fid) %最后不要忘记关闭文件
阅读方法三:
[ ] = textread(filename,format,N)
括号中的变量数量必须与格式中定义的数量相同。 如果每N行数据格式相同,则可以使用句型[A,B,C,…]=textread(filename,format,N)读取N次。
或者
['format', N, 'param', value) ] = textscan(fid,
返回扫描结束时文件或字符向量中的位置作为第二个输出参数。 对于文件php读取excel文件,该值相当于调用textscan后跟ftell(fileID)返回的值。对于字符向量,position表示textscan读取了多少个字符
或者
A = importdata(filename)
3号
nc文件读写
读:
A=ncread('filename.nc','Name',[1 1 1 1],[X Y 1 1]);%[1 1 1 1]为起始位置,X、Y为读取终点位置。
写:
在编写nc文件时,要特别注意自己定义变量名和变量属性后对变量的形参操作:
比如峰会上男配Threetee给出的拦截示例(原帖链接在后面):
varid2 = netcdf.defVar(ncid,'lat','double',[dimidx]);%定义新变量
netcdf.putAtt(ncid,varid2,'long_name','Latitude');%设定变量属性
netcdf.endDef(ncid);
netcdf.putVar(ncid,varid2,lat);%给新变量赋值
netcdf.close(ncid);
也可以使用read_grib工具包进行读写,这里就不过多展开了。 有兴趣的男同伴可以去气象花园自行了解一下:
其他关于读写nc文件的讨论如下:
NC文件读取指令(经度范围):(drx)
分享一个使用MATLAB将数据写入nc格式文件的程序:(thirdee)
MATLAB批量读取nc文件,并进行数据处理和绘图:(吴东友)
关于MATLAB读取nc数据并绘制风场:(zhangxk14)
nc data全解析-3数据处理:月度数据改季度数据、年度数据、数据标准化:(652554221)
使用MATLAB读取并编译nc文件:(绕来绕去)
nc文件及相应头文件的生成:(包含和)
! ! 手把手教! ! 读取nc文件变量到excel,然后输出数据合成nc:(叮当卖猫的)
4号
关于读写文件的附加讨论
文档其他部分的读写方法请参见下面链接中的峰会讨论:
陌陌无法添加外部超链接,请复制链接至浏览器即可食用!
关于用MATLAB一站式读取NetCDF、OPeNDAP、HDF5、GRIB、GRIB2、HDF4等:
MATLAB读取文本文件(txt)数据的方法总结:
读取 grads 数据的 MATLAB 函数:(firenix)
MATLAB处理的数据被编写为GrADS绘图的二补代码 - 使用fwrite函数:(Aires)
MATLAB数据转grads网格点数据函数:(斥力)
分享一个自编的关于cmip5数据提取和插值的程序:(lancerv8)
MATLAB读取卫星hdf数据的步骤总结:(windprofiler)
MATLAB 读取 SA 雷达基础数据文件并显示它:(又是那只猫)
MATLAB手动读取micaps数据并存储为结构化链表程序:(薛お玄墨)
MATLAB读取MICAPS数据源程序:(雪お玄莫)
读取MICAPStlogp格式数据:(daveryjl)
分享一个读取和绘制.he5文件的例子:(大佬小子)
MATLAB读取AWX文件(TBB):(三野口碑不错)
使用 MATLAB 从图形图像中提取数据:
参考:
[1] MATLAB官网字符串低格式部分:
[2]小泥鳅教程:
本期内容就结束了! 有更多想法吗?
欢迎来到MATLAB蓝筹之家,我们一起来玩吧!
版式:自古无毛