Matlab 读取 gprmax 的 out 文件详细解释

Matlab 读取 gprmax 的 out 文件规律详细解释。

out 文件是hdf5格式的文件,普通软件无法读取。out 文件有一定的规律,在matlab平台上简单操作一下,就可以深刻理解 out 文件含义了

一、常用函数简介

1、hdf5read

我用的 matlab 版本为2020a,帮助文档提示不推荐使用hdf5read,建议使用h5read函数,但是我感觉hdf5read函数比较实用一些。
在这里插入图片描述

2、h5read

新版的matlab使用这个函数
在这里插入图片描述

3、h5info

这个函数可以查看h5文件中有哪些信息,也可以用来读取一些值
在这里插入图片描述

4、h5disp

这个函数查看h5文件中的信息,比h5info显示的多一些,不能用来读取数据
在这里插入图片描述

二、读取out文件

我的经验就是一个将函数一个一个的尝试,试多了就懂了如何读取out文件了。

close all
clear
clc

% 选择out文件
[FileName,PathName] = uigetfile('*.out',...
    '选择gprMax模拟的out文件',...
    'MultiSelect','on');


inFileName = strcat(PathName,FileName);

% 显示hdf5数据文件格式
h5disp(inFileName);

% 用h5disp显示数据文件,在命令行窗口出现一大推数据,影响直观显示
% 这里用h5info重新显示一下,较简洁,而且可以读取标题等内容

info=h5info(inFileName);

% 文件的绝对路径
file_road = info.Filename;

% HDF5文件包含的groups信息
file_groups = info.Groups;
% DHF5文件中包含的attributes信息
file_attibutes = info.Attributes;
% Attributes中包含 Name datatype dataspace value等信息
% 可以读取结构体中的数据,类似于python中的字典
% info.Atttibutes.Name
% info.Atttibutes.Datatype
% info.Atttibutes.Dataspace
% info.Atttibutes.Value

% 如果我们要获取第二排信息
% info.Attributes(2).Name
% 第二排信息的值
% info.Attributes(2).Value

% 读取采样时间
dt = info.Attributes(6).Value;


% 读取接收器的编号
rx_number = {info.Groups(1).Groups.Name};
% 注意接收器的编号不是从小到大排列的
% 编号是按照个位数与两位数的十位数排列的
% 如1 11 12 ... 2 21 21... 3 31 31... 4 5 6 

% 读取源的编号
src_number = {info.Groups(2).Groups.Name};

for i = 1:30
    % 读取Ez分量
    a = h5read(file_road,strcat(rx_number{i}, '/Ez'));
    b(i,:) = a;
    % imagesc(a);
    % pcolor(a);
    plot(a)
    set(gca,'ydir','reverse');

    % 读取位置信息
    position = info.Groups(1).Groups(i).Attributes(2).Value;
    p(i,:) = position;
end

% 注意H5文件中文件的排序问题
% 如果有out文件里面的接收排列编号有两位数
% 那么编号按照两位数的十位数排列
% 所以读取的文件顺序是不对的。

三、out文件数据格式

out文件是一个group,这个group里面包含Attributes和两个子group。

Attributes里面包含了正演模拟的基本信息:gprmax版本、文件名、迭代次数、网格数、网格步长、采样时间间隔、发射点个数、接收点个数、移动步长等,Attributes里面的信息用h5read不能直接读出来,而用hdf5read可以读取,也可以用h5info读取,但是h5info读取容易读错,需要对out文件格式非常熟练。

两个子group里面包含了源的信息和接收点的信息,主要有:场强数据、位置信息、规模等,同样里面包含的Attributes无法用h5read无法读取,需要用hdf5read读取。
在这里插入图片描述
在这里插入图片描述

  • 7
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 19
    评论
要将gprmax的out文件转化为雷达文件,首先需要了解gprmax out文件的格式和雷达文件的格式。gprmax out文件gprmax模拟程序生成的输出文件,其中包含了地下介质的电磁数据,如信号波形、反射系数等。而雷达文件一般是可被雷达设备读取和解析的文件,常见的格式有MATLAB的.mat文件、ASCII文件等。 要将gprmax out文件转化为雷达文件,可按照以下步骤操作: 1. 了解gprmax out文件的格式:打开gprmax out文件,查看其中的数据结构和字段。根据数据的类型,可以确定如何将其转化为雷达文件。 2. 定义雷达文件的格式:选择合适的雷达文件格式,例如MATLAB的.mat文件,ASCII文件等。确保选取的格式能够满足后续分析或设备使用的需求。 3. 使用编程语言或工具进行文件转换:采用编程语言如Python、MATLAB等,或者相关工具如MATLAB、Octave等软件,将gprmax out文件中的数据提取并转换为雷达文件的格式。 - 如果选择使用编程语言,可以使用文件读写操作进行数据提取,然后使用相应的库或工具将数据转换为所需的雷达文件格式。例如,使用Python的NumPy库可以将数据保存为MATLAB的.mat文件,或者使用CSV库将数据保存为CSV文件。 - 如果选择使用软件工具,可以在相应软件中加载gprmax out文件,然后使用软件提供的函数、操作界面等转换为雷达文件格式。例如,使用MATLAB或Octave软件,可以加载gprmax out文件,将其中的数据保存为.mat文件等。 4. 验证转换结果:将转换后的雷达文件导入雷达设备或使用相应的工具进行分析,验证数据的准确性和可用性。 以上是将gprmax out文件转化为雷达文件的一般步骤。具体操作细节可能会依赖于所选的编程语言、工具和雷达文件格式。在实际操作中,建议参考相应的文档、教程或寻求相关领域专家的帮助,以确保转换过程的正确性和有效性。
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

商功贤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值