Pycharm运行gprmax3.0具体步骤

0. 介绍

  • 之前的博客中简单讲到了gprmax3.0安装使用过程中的一些问题(点此进入),pycharm运行gprmax能避免cmd操作中反复复制粘贴的过程,便于模拟,对仿真数据量较大时特别有用,尤其是机器学习、深度学习所需大量数据的仿真,这篇博客主要介绍如何在pycharm中配置gprmax以及其使用方法
  • 欢迎交流:1593458764@qq.com
  • 特别说明:由于本人最近闲暇时间太少,不再提供免费安装等服务,望理解!

1. 配置步骤

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2. 使用pycharm进行仿真

2.1 打开项目

  • 解压concrete.zip(点击此处下载),解压后的文件夹通过pycharm以项目方式打开。
  • 文件里面代码有些地方没改,具体的看下面,还有可能因pycharm版本不一样导致仿真错误,可以自己新建一个项目,然后将文件以及文件夹复制到新建项目文件夹下。
  • 通过File->setting选择第一步中添加的gprmax解释器。
    在这里插入图片描述

2.2 A扫描仿真

"""
python运行gprmax
读取.in文件
运行api函数模拟
"""

import os
import numpy as np
import matplotlib.pyplot as plt
from gprMax.gprMax import api
from tools.outputfiles_merge import get_output_data, merge_files



#文件路径+文件名
dmax=r".\GprmaxCode" #项目目录
filename = os.path.join(dmax,'concrete_Ascan_2D.in')
#正演  n:仿真次数(A扫描次数)->B扫描
api(filename, n=1, geometry_only=False)  #geometry_only:仅几何图形
#merge_files(r".\GprmaxCode\concrete_Ascan_2D", removefiles=True)

# 获取回波数据
# A B扫描时out文件名不一样
filename = os.path.join(r".\GprmaxCode\concrete_Ascan_2D.out")
rxnumber = 1
rxcomponent = 'Ez'
outputdata, dt = get_output_data(filename, rxnumber, rxcomponent)

# 保存回波数据
np.savetxt('concrete_Ascan_2D.txt',outputdata,delimiter=' ')

## B扫描绘图
#from tools.plot_Bscan import mpl_plot
#plt = mpl_plot(filename,outputdata, dt*1e9, rxnumber, rxcomponent)
#plt.ylabel('Time [ns]')
#plt.show()

## A扫描绘图
from tools.plot_Ascan import mpl_plot
from gprMax.receivers import Rx
outputs = Rx.defaultoutputs
outputs = ['Ez']
print(outputs)
plt = mpl_plot(filename, outputs)
plt.show()

结果:
在这里插入图片描述

2.3 B扫描仿真

  • in文件中要加天线移动步长
  • B扫描时要取消屏蔽merge_files和绘制B扫描图的程序
  • 通过merge_files合并各道数据文件时要删除之前A扫描留下的out文件
  • 仿真完成后保存B回波数据和绘图等都是对merge_files合并后的数据进行处理,所以程序中对应文件名要改为concrete_Ascan_2D_merged.out
"""
"""
python运行gprmax
读取.in文件
运行api函数模拟
"""

import os
import numpy as np
import matplotlib.pyplot as plt
from gprMax.gprMax import api
from tools.outputfiles_merge import get_output_data, merge_files



#文件路径+文件名
dmax=r".\GprmaxCode" #项目目录
filename = os.path.join(dmax,'concrete_Ascan_2D.in')
#正演  n:仿真次数(A扫描次数)->B扫描
api(filename, n=2, geometry_only=False)  #geometry_only:仅几何图形
merge_files(r".\GprmaxCode\concrete_Ascan_2D", removefiles=False)

# 获取回波数据
# A B扫描时out文件名不一样
filename = os.path.join(r".\GprmaxCode\concrete_Ascan_2D_merged.out")
rxnumber = 1
rxcomponent = 'Ez'
outputdata, dt = get_output_data(filename, rxnumber, rxcomponent)

# 保存回波数据
np.savetxt('concrete_Bscan_2D.txt',outputdata,delimiter=' ')

## B扫描绘图
from tools.plot_Bscan import mpl_plot
plt = mpl_plot(filename,outputdata, dt*1e9, rxnumber, rxcomponent)
plt.ylabel('Time [ns]')
plt.show()

## A扫描绘图
#from tools.plot_Ascan import mpl_plot
#from gprMax.receivers import Rx
#outputs = Rx.defaultoutputs
#outputs = ['Ez']
#print(outputs)
#plt = mpl_plot(filename, outputs)
#plt.show()

结果:
在这里插入图片描述

2.4 堆叠波形

堆叠波形

space_signal = 100   # 信号间隔(按实际情况变更)
tw = 14              # 时间窗(与in文件一致)
trace_number = len(outputdata[0])
for i in range(trace_number):
    plt.plot(outputdata[:,i]+(i+1)*space_signal,np.linspace(0,tw,len(outputdata)),color='m')
plt.xticks(range(space_signal,trace_number*space_signal+1,space_signal),range(1,trace_number+1))
plt.xlim(0, space_signal*(trace_number+2))
plt.ylim(0, tw)
plt.xlabel('trace_number')
plt.ylabel('Time [ns]')
ax = plt.gca()          # 获取句柄
ax.invert_yaxis()       # y轴反向
ax.xaxis.tick_top()     # x轴放在上方
plt.show()

在这里插入图片描述

  • 15
    点赞
  • 116
    收藏
    觉得还不错? 一键收藏
  • 22
    评论
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值