|||
还是花点时间记录一下,搞了好大一会儿,发现还是最简单的方式解决了看似复杂的问题。
对于.grd文件,应该是经常会遇到,今年就是不想简单人工手动解决,就是想万一后面遇到批量处理的grd文件,也好用代码处理。
有人推荐用fopen, fread方式结合去读取,试过之后发现有以下问题:
(1)对于有NODATA的空值,通常都是-9999等数值替代,但对于其他有数据的值,格式多为浮点型(float 或者 double类型),字符读取长度的不一致导致 fread 函数中的 precision 参数不确定如何设置;
(2)fread 貌似是从后向前读,所以对于头几行的跳过,参数设置一直不太成功(个人尝试)
(1)直接将grd文件拖入matlab中是可以打开的,如下图,通过把头几行砍掉,复制粘贴到矩阵中是可以解决问题的,但这需要 手动;
(2)matlab 的 importdata函数可以直接以矩阵方式读入,且可以设置“间隔符(DelimiterIn)”和”跳行(HeaderlinesIn)“
loads data into array A
= importdata(filename
)A
.
loads data from the system clipboard rather than from a file.A
= importdata('-pastespecial')
interprets A
= importdata(___,delimiterIn
)delimiterIn
as the column separator in ASCII file, filename
, or the clipboard data. You can use delimiterIn
with any of the input arguments in the above syntaxes.
loads data from ASCII file, A
= importdata(___,delimiterIn
,headerlinesIn
)filename
, or the clipboard, reading numeric data starting from line headerlinesIn+1
.
[
additionally returns the detected delimiter character for the input ASCII file in A
,delimiterOut
,headerlinesOut
] = importdata(___)delimiterOut
and the detected number of header lines in headerlinesOut
, using any of the input arguments in the previous syntaxes. additionally returns the detected delimiter character for the input ASCII file in delimiterOut
and the detected number of header lines in headerlinesOut
, using any of the input arguments in the previous syntaxes.
所以直接用 importdata 函数读取即可
可以看到数据形状是一致的,但需要注意的是:矩阵可能是倒置的
因此可以通过 pcolor() 函数进行查看,用 flip函数进行倒置转换!
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-22 22:09
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社