当前位置:文档之家› matlab文件的导入导出

matlab文件的导入导出

matlab文件的导入导出
matlab文件的导入导出

GprMaxV2.0中GprMax2D输入文件的命令(1/2) 原创

修改人

修改时间

版本

微风无尘

微风无尘

2012.3.9

V1.1

实验环境:

操作系统:Windows 7

软件版本:MATLAB 7.1 & GprMaxV2.0

参考文献:

GprMaxV2.0软件manual文件夹下的UserGuideV2.pdf。

GprMaxV2.0下载地址:https://www.doczj.com/doc/4213627489.html,/Download.html

说明:翻译得不好,还望大家见谅,因为我也是边看边译的。

3.1 GprMax2D命令的一般注意事项

为了描述GprMax2D/3D命令及其参数,我们作以下约定:

f表示浮点数(如1.5或15e-1、1.5e1)

i表示整数

c表示字符

str表示字符串

file表示输入文件名

所有空间距离的基本单位为米

所有时间的基本单位为秒

所有频率参数的基本单位是Hz

3.2 GprMax2D 2.0版本共有32条命令:#title:

#domain:

#dx_dy:

#time_step_stability_factor:

#time_window:

#messages:

#number_of_media:

#nips_number:

#media_file:

#geometry_file:

#medium:

#abc_type:

#abc_order:

#abc_stability_factors: #abc_optimization_angles: #abc_mixing_parameters: #pml_layers:

#box:

#cylinder:

#x_segment:

#y_segment:

#triangle:

#analysis:

#end_analysis:

#tx:

#rx:

#rx_box:

#snapshot:

#tx_steps:

#rx_steps:

#line_source:

#excitation_file:

以下可以运行于GprMax中的命令在GprMax2D版本2.0中将不再支持:

#scan:

#csg:

#extra_tx:

另外,一些命令的旧的参数规则亦发生了变化:

#tx:

#snapshot:

3.3 GprMax2D命令参数

为了更好地介绍GprMax2D命令,我们将它们分成四类:

一般命令:包括用于指定的大小和模型的离散

ABC相关命令: 允许定制和优化吸收边界条件

介质和对象的构造命令: 用不同的参数来在模型中引入不同的介质和构造简单的几何形状

激励和输出命令:用来放置源代码和模型的输出点

运行GprMax2D最低限度的命令如下:

?#domain:

?#dx_dy:

?#time_window:

?至少一个#analysis:及与其对应的结束命令#end_analysis:

至少一个#tx:与#rx:,或者#rx_box:命令

?为了使#tx: 命令正确运行,同时需要一行新的#line_source:命令

3.3.1一般命令

#title:

模型的题目

#title: str

Str即是模型的题目,必须是单行的。

#domain:

模型的范围(单位:米)

#domain: f1 f2

f1与f2分别代表x和y轴上的量度大小#domain: 1.0 1.5

表示1.0*1.5的大小范围

#dx_dy:

表示x和y轴上的偏移量(如△x、△y) #dx_dy: f1 f2

表示x轴偏移f1和y轴方向上偏移f2

#domain: 1.0 1.5

#dx_dy: 0.1 0.1

则模型的单元数为10*15

#domain: 1.0 1.5

#dx_dy: 0.01 0.01

则模型的单元数为100*150

最大允许时间步△t与△x、△y的约束关系如下:

(3.1)

C为光速,GprMax2D中计算△t使用3.1式等号。

#time step stability factor:

通过该命令,你可以修改GprMax2D所计算的△t的值,但必须满足3.1式的要求。

#time_window:

用于指定所需的总的模拟时间。语法:

#time_window: f1

或者

#time_window: i1

总的迭代次数和模拟时间窗口:(3.2)

#number_of_media:

但你需要使用大于10个介质时必须使用该命令,因为GprMax2D只初始化了10个介质的使用空间。

#number_of_media: i1

i1大于10。

#media_file:

使用该命令,你可以定义常用介质所描述的结构参数的文件路径与名称。

#geometry_file:

使用该命令,你可以定义模型的几何信息的二进制文件。这些信息可以用于创建模型的图像与检查创建的正确与否。

#geometry_file: model.geo

#messages:

使用该命令,你可以控制软件运行时在屏幕上的输出信息。

#messages:c1

#nips_number:

该命令仅当在GprMax2D需要时才用于你的输入文件中。

#nips_number: i1

微风无尘的瓶子

为什么我总要学习新的东西?不是因为我好学,而是我以前太懒了。

2012-03-16 00:28

GprMax中GprMax2D的使用方法

原创

修改人

修改时间

版本

微风无尘

微风无尘

2012.3.18

V1.3

实验环境:

操作系统:Windows 7

软件版本:MATLAB 7.1 & GprMaxV2.0

参考资料:

[1]UserGuideV2.pdf

一、GprMax2D软件使用

1.1 直接运行..\GprMaxV

2.0\Windows文件夹下的GprMax2D.exe文件,会出现以下窗口(也可以在命令提示符窗口输入命令运行) :

1.2 输入文件名

注意:要输入文件的全路径;*.in文件只要出现任何语法错误或者路径错误,软件都会自动关闭,不会有任何错误提示。

出现以下画面(以自带例子文件bre1.in为例,*.in的命令参考前面的文章或[1]):

运行完毕会发现..\GprMaxV2.0\Windows文件夹下多了两个文件bre1.out、bre1.geo文件,复制到tools文件夹。

二、数据成像

tools文件夹下有五个m文件:gprmax.m,

gprmax2g.m, gprmax3g.m, gprmaxde.m , gprmaxso.m。

这里只讲gprmax2g.m,gprmax.m这两个文件的用法,其他三个以后有空再写。gprmax3g.m是处理GprMax3D的几何数据的;gprmaxde.m用来计算Debye公式(参考[1])介电常数的;gprmaxso.m用于计算激励函数的。

2.1 gprmax2g.m的使用方法

gprmax2g函数用于读取GprMax2D软件仿真探地雷达模型生成的二进制几何数据。

gprmax2g函数的原型:

[mesh,header,media] = gprmax2g( 'filename' )

filename是.geo文件名;

media: 存储介质类型,media.type;

header: 存储模型的几何参数;

header.title: 模型的名称;

header.dx: 模型在X轴每次偏移大小(单位:m);

header.dy: 模型在Y轴每次偏移大小(单位:m);

header.dt: 最大允许时间步长(单位:秒);

header.nx: 模型在X轴的偏移次数;

header.ny: 模型在Y轴的偏移次数;

例子:如输入文件*.in中定义:

#domain: 2.5 0.65

#dx_dy: 0.0025 0.0025

那么:header.dx=0.0025; header.dy=0.0025;

header.dt = 1/(c*sqrt(1/header.dx^2+1/header.dy^2)); (其中

c=299792458,为光速,公式参考[1]);

header.nx=2.5/0.0025=1000; header.ny=0.65/0.0025=260;

mesh: 存储模型数据,M x N的数组,其中M为Y轴方向的Yee单元数目,N 为X轴方向的Yee单元数目;M=header.nx,N=header.ny;

gprmax2g.m的使用例子:

filegeo = 'bre1.geo';

[meshdata,header,media]=gprmax2g(filegeo);

figure(1);

[MM,NN]=size(meshdata);

imagesc((1:NN)*header.dx,(1:MM)*header.dy,meshdata)

axis('equal');

xlabel('x(m)');

ylabel('y(m)');

2.2 gprmax.m的使用方法

gprmax函数用于读取GprMax2D与GprMax3D软件仿真探地雷达模型生成的二进制波形数据。

gprmax函数的原型:

[Header, Fields] = gprmax( 'filename' )

filename是.out文件名;

1) Header:该变量包括以下成员:

Header.title: 模型的名称;

Header.iterations: 迭代次数;

Header.dx: 在X轴每次偏移大小;

Header.dy: 在Y轴每次偏移大小;

Header.dt: 最大允许时间步长;

Header.NSteps: 仿真次数;等于*.in文件中#analysis:命令的第一个参数;

例子:如输入文件*.in中定义:

#domain: 2.5 0.65

#dx_dy: 0.0025 0.0025

#time_window: 12e-9

……

#analysis: 115 bre1.out b

#tx: 0.0875 0.4525 MyLineSource 0.0 12e-9

#rx: 0.1125 0.4525

#tx_steps: 0.02 0.0

#rx_steps: 0.02 0.0

#end_analysis:

……

那么,Header.iterations=ceil(Header.removed/Header.dt);

Header.dx=0.0025;Header.dy=0.0025;

Header.dt= 1/(c*sqrt(1/Header.dx^2+1/Header.dy^2));

Header.NSteps=115;

Header.TxStepX=0.02/Header.dx=8; Header.TxStepY=0.0/Header.dy=0; Header.RxStepX=0.02/Header.dx=8; Header.RxStepY=0.0/Header.dy=0; Header.ntx:

Header.nrx:

Header.nrx_box:

Header.tx=0.0875/Header.dx=35;

Header.ty=0.4525/Header.dy=181;

Header.s ource=’MyLineSource’;

Header.delay=0;(等于#tx:命令的第四个参数)

Header.removed=12e-9;(等于#tx:命令的第五个参数)

Header.rx=0.1125/Header.dx=45;

Header.ry=0.4525/Header.dy=181;

2)Fields: 该变量包括以下成员:

Fields.t: 每个波形的时间轴。数组大小Header.iterations*1;

Fields.ez: Z轴方向磁矢量数据。数组大小

Header.iterations*1* Header.NSteps;

Fields.hx: X轴方向电矢量数据。数组大小

Header.iterations*1* Header.NSteps;

Fields.hy: Y轴方向电矢量数据。数组大小

Header.iterations*1* Header.NSteps;

由于GprMax仿真是基于FDTD算法的,以上三者的关系为:

详细可参考FDTD算法的相关文献。

gprmax.m的使用例子:

fileout = 'bre1.out';

[Header,Fields]=gprmax(fileout);

N=1:Header.NSteps; %移动次数

Position=Header.dx*Header.tx+(N-1)*(Header.dx*Header.T xStepX); %天线每次所在位置

Data(:,:)=Fields.ez(:,1,:); %转换数组格式figure(2);

imagesc(Position,Fields.t*1e9,Data);%画图colorbar

xlabel('Antena Position (m)');

ylabel('t(ns)');

微风无尘的瓶子

为什么我总要学习新的东西?不是因为我好学,而是我以前太懒了。

微风无尘

男 25岁

广东广州

粉丝: 79

ta关注的人: 1

私信| 相册| 存档

最新照片

?

?

?

?

?

?

?

?

?

?全部

?ns2网络仿真实验

?探地雷达仿真

?超声仿真

?无线通信

?编程

?zigbee技术

Ta关注的人(1)

?

GprMaxV2.0中GprMax2D输入文件的命令(2/2)

前面紧接前一篇《GprMaxV2.0中GprMax2D输入文件的命令(1/2)》

3.3.2 ABC 相关命令

在GprMax2D使用的ABC默认值应该足以应付大多数模拟和调整并运行良好且没有引进任何不稳定性。

PML:Perfectly Matched Layer,完全匹配层。

为了使用PML边界条件来代替默认的Higdon ABC,必须使用下面的命令:

#abc_type: pml

而命令:

#abd_type: higdon

可以将ABC设置为默认的参数。

用户可以定义PML的厚度(或深度),使用以下命令:

#pml_layers: i1

其中i1是PML所占有的Yee 单元的数目,默认值为8。

注意:PML层是模型几何的一部分。PML层域是无用的,在计算过程中使用它们的做法是错误的。还有,不要放置发射源和接收源在有PML的模型里。PML的厚度使用Yee 单元的数目来衡量,而不是米。

接下来的语句可以用于Higdon ABCs的实验或者未来需要的调整。这些参数不是GprMax2D中构建GPR模型所必须的,使用时要多加注意。

#abc order:

该命令决定ABC的顺序。

#abc_order: i1

i1可以取值1,2,3,默认值是3。

#abc_order: 1

该命令将会强制GprMax2D使用第一顺序的Higdon ABC。低顺序的ABC唯一好处是稳定性更好一些。

#abc_stabi

阅读全文

#探地雷达仿真

[转]GprMaxV2.0中GprMax3D输入文件的命令(2/2)

最近没空翻译UserGuideV2.pdf中关于GprMax3D的说明,发现有一网友做了这个工作,故转过来,用于参考。

原文网址: https://www.doczj.com/doc/4213627489.html,/s/blog_49c01e6601015azv.html

4.3.4 激励和输出命令

#excitation_file:

允许用户指定单个包含能够激励模型的幅度值的清单ASCII文件。这些值至少要和迭代次数相等。

#excitation_file:str1

Str1是ASCII文件的名字。

例:#excitation_file: mysource.dat

#hertzian_dipole:

定义最简单的激励。

#hertzian_dipole:f1 f2 str1 str2

F1 f2分别是源波形的幅度和频率。Str1是波形标示符。Str2是源标示符。

例:#hertzian_dipole:1.0 600e6 ricker MyDipole

与GPRMAX2D里面的#line_source等价

#voltage_source:

定义电压源。它引入一个电压器件的位置,可以是一个硬源或者一个内部集成电阻。

#voltage_source:f1 f2 str1 f3 str2

F1 f2是源波形的振幅和频率。Str1是波形标示符。 F3是内部电阻R。

例:#voltage_source:1.0 600e6 gaussian 50.0 MyVolt

#transmission_line:

定义能够刺激天线的1D两线传输线的参数。

#transmission_line: f1 f2 str1 f3 f4 str2

F1 f2是源波形的振幅和频率,str1是激励类型。F3是传输线的长度。F4是阻抗特征,str2是源标示符

例:#transmission_line:1.0 600e6 gaussian 0.5 2 阅读全文12

#探地雷达仿真

GprMax中GprMax2D的使用方法

原创

修改人

修改时间

版本

微风无尘

微风无尘

2012.3.18

相关主题
文本预览
相关文档 最新文档