如何用gprMax实现对MATLAB自定义发射信号的仿真

本文介绍如何用gprMax实现对MATLAB自定义发射信号的仿真。引入线性时不变系统求解响应原理,阐述仿真步骤,包括执行xxx.in文件、导入冲激响应数据到MATLAB、进行卷积操作等,并以高斯信号验证。同时给出注意事项,如合理设置dx、dy、dz的值。

如何用gprMax实现对MATLAB自定义发射信号的仿真

gprMax支持用户自定义信号的输入,但是在更加复杂的环境下,输入信号的波形可能会经常性地发生改变,而若是使用gprMax的自定义波形功能,则需要在每一次重新定义波形以后,重新进行建模处理,这一操作在B-SCAN或3D建模的情况下会消耗大量的时间

本文中的大部分内容为作者个人的理解,由于刚刚接触GPR,一些理解有可能是错的,读者请自行取舍。

本人不常用优快云,如有相关问题,可发送电子邮件至2538703415@qq.com

在不重新执行建模的前提下对施加给模型的信号进行快速修改,理论上来说可以做到,思路大致如下:

基本原理

将线性时不变系统(LTI)求解响应的原理引入

LTI模型

对于输入信号x(t),若已知系统的冲激响应h(t),则能够得到对于输入信号x(t)的响应y(t):

y ( t ) = x ( t ) ∗ h ( t ) y(t) = x(t)*h(t) y(t)=x(t)h(t)

在gprMax中,开发者在波形选项中给出了冲激信号这一选项,其相关函数位于gprMax文件夹下的waveform.py中:

.
.
.

 elif self.type == 'impulse':
     # time < dt condition required to do impulsive magnetic dipole
     if time == 0 or time < dt:
         ampvalue = 1
     elif time >= dt:
         ampvalue = 0

 elif self.type == 'user':
     ampvalue = self.userfunc(time)

 ampvalue *= self.amp

 .
 .
 .

A-SCAN模式下在实际求解冲激响应模型时,可以直接将.in文件中原本的waveform类型直接改成impulse,其他地方可以不修改

#waveform: impulse 1 1.5e9 my_ricker

在执行仿真的时候可能会出现警告,但不影响结果(暂时没因为此警告出现问题)


仿真步骤

在开始前要留意目前为止本人认为冲激信号.in文件中唯一要关注的一个地方:

#time_window: 6e-9

在求解冲激响应模型时,这个时间窗的大小务必按照你最后希望得到的时间窗进行设置(可以设的更大,但是绝对不能比期望值更小)

假设你想要观测10ns里模型接收信号的表现,那么这个时间窗的长度就不能小于10ns

下面是具体的仿真步骤:

  1. 用gprMax执行设置好的xxx.in文件:

    文件如下:

     #title: A-scan from a metal cylinder buried in a dielectric half-space
     #domain: 0.240 0.210 0.002
     #dx_dy_dz: 0.002 0.002 0.002
     #time_window: 6e-9
    
     #material: 6 0 1 0 half_space
    
     #waveform: impulse 1 1.5e9 my_r
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值