[x,y]=meshgrid(-2:0.1:2,-2:0.1:2)
%以0.1为步长建立平面数据网格
z=1./sqrt((x-1).^2+y.^2+0.01)... %写出电势表达式
-1./sqrt((x+1).^2+y.^2+0.01)
[px,py]=gradient(z)
%求电势在x,y方向的梯度即电场强度
contour(x,y,z,[-12,-8,-5,-3,-1,... %画出等势线
-0.5,-0.1,0.1,0.5,1,3,5,8,12])
hold on %作图控制
quiver(x,y,px,py,'k') %画出各点上电场的大小和方向
2. 等量同号点电荷的电场线的绘制
下面是写微分方程的函数文件:
function ydot=dcx1fun(t,y,flag,p1,p2)
%p1,p2是参量,表示电量
ydot=[p1*(y(1)+2)/(sqrt((y(1)+2).^2+y(2).^2).^3)+...
p2*(y(1)-2)/(sqrt((y(1)-2).^2+y(2).^2).^3)
%dx/dt=Ex
p1*y(2)/(sqrt((y(1)+2).^2+y(2).^2).^3)+...
p2*y(2)/(sqrt((y(1)-2).^2+y(2).^2).^3)]
%dy/dt=Ey
编写好函数文件后,命名为dcx1fun.m存在当前路径下,然后开始编写解微分方程的主程序dcx1.m:
p1=10p2=10%点电荷所带电量
axis([-5,5,-5,5])%设定坐标轴范围 -5≤x≤5,-5≤y≤5
hold on %图形控制,不可擦除模式
plot(2,0,'*r')plot(-2,0,'*r') %绘制两源电荷
a=(pi/24):pi/12:(2*pi-pi/24)
%圆周上电场线起点所对应的角度
b=0.1*cos(a)c=0.1*sin(a)
%电场线起点所对应的相对坐标
b1=-2+bb2=2+b%把起点圆周的圆心放置在源电荷处
b0=[b1 b2]c0=[c c]%初始条件,所有电场线的起点
%的横、纵坐标构成了矢量b0和c0
for i=1:48 %循环求解48次微分方程
[t,y]=ode45('dcx1fun',[0:0.05:40],[b0(i),c0(i)],[ ],p1,p2)
%调用ode45求解,对应一个初条件(起点),求解出一条电场线
plot(y(:,1),y(:,2),'b') %绘制出此条电场线
end %结束循环,共绘制出48条电场线
参考于《Matlab 在基础物理学中的应用》
http://bnucourse.bnu.edu.cn/course/physics/05/jcwlxshyjy.pdf
将画图工具中所画的图保存到便于找到的文件夹,例如桌面。
在word需要插入图片的位置单击鼠标左键,然后点击“插入-图片”,在d出的对话框中找到已经保存的图片,选中图片后,点击右下角“插入”,就在word中插入了该图片。
1 GRADS有关的文件类型和维数环境可以认为和GRADS有关的文件类型有:十进制的原始数据文件(*.TXT)、二进制的数据文件(*.DAT)、数据描述文件(*.CTL)、批处理文件(*.GS)和图形文件(*.GMF)。
气象业务中使用的站点资料或格点资料都是以十进制形式存放,而GRADS只能识别二进制的数据格式,所以使用GRADS之前的第一步就是转换数据文件;数据描述文件则是对数据文件进行说明,以便后续的 *** 作有对象;批处理文件是把进入GRADS绘图环境后所要输入的命令写成批处理格式,以便可以自动执行输入的各项 *** 作命令(批处理文件可单独建立,也可以略过不写,而在进入GRADS环境后一步一步地输入各项 *** 作命令);图形文件是GRADS已经绘制好的图形,只能用GV打开浏览。
数据文件一般都是用Power Station或Visual Fortran来转换(也可以用C语言或其它工具)。数据描述文件、批处理文件可以在“写字板"中写好,只是在存档的时候,要把文件的后缀改为.CTL和.GS。
GRADS将每一个物理量场视为1个四维数据集,它包括空间三维和时间一维。维数环境的定义由SET LAT(纬度)/LON(经度)/LEV(高度)/TIME(时间)来设置,也可由SET X/Y/Z/T来设置。
2 GRADS的使用方法
文中采用1982年1月~1994年12月共156个月气象场中的1 000 hPa的海平面气压、温度以及850 hPa、500 hPa、200 hPa的u、v风场的月平均数据和45°×15°的格点资料,来举例说明GRADS的具体使用方法(经度为40°E~150°E,纬度为10°S~25°N)。
2.1 数据文件的转换
格点资料用Power Station转换,程序如下:
PARAMETER(NX=45,NY=15)
REAL GRID(45,15)[格点资料数组大小]
CHARACTER*60 AA(156) [定义数组前的说明为字符串]
CHARACTER*20 DNAME(8) [资料文件的数量]
DATADNAME/'D:.DAT','D:.DAT',
$'D:.DAT','D:.DAT',
$'D:.DAT','D:.DAT',
$'D:.DAT','D:.DAT'/
[须描述资料文件的列举]
DO 10 N=1,8</FONT>
OPEN(10+N,FILE=DNAME(N))
10 CONTINUE
[依次打开各个资料文件]
OPEN(20,FILE='D:.GRD',FORM='BINARY',
$ACCESS='DIRECT',RECL=NX*NY*4)
[把所有须描述的资料文件数据同时放入1个文件ALLDAT中,以便只须1次转换后便可以随意调取]
INUMBER=0
DO 100K=1,156</FONT>
DO 20 N=1,8</FONT>
READ(10+N,50)AA(K)
READ(10+N,40)((GRID(I,J),I=1,NX),J=1,NY)
INUMBER=INUMBER+1
WRITE(20,REC=INUMBER)((GRID(I,J),I=1,NX),J=1,NY)
20 CONTINUE
100 CONTINUE
[本程序按经纬度顺序先读写第一时刻的SLP、SST、U850、U500、U200、V850、V500、V200,再读写第二时刻的资料,依次类推...]
40 FORMAT(15F4.0)
50 FORMAT(A60)
END
2.2 数据描述文件的编写
数据描述文件DAT.CTL的编写格式为:
DSETD:.GRD[DSET是给出所描述文件的文件名]
TITLEWEATHERDATA[该数据描述文件的标题]
UNDEF-9.99E33[缺省记录的标记]
XDEF45 LINEAR40 2.5[X方向共45个格点,起始纬度为40°,步长为2.5°]
YDEF15 LINEAR-10.0 2.5[Y方向共15个格点,起始经度为-10°,步长为2.5°]
ZDEF4 LEVELS1000 850 500 200[Z方向分为4层,即1 000、850、500、200 hPa]
TDEF 156 LINEAR JAN1982 1MO[时间共156个月,起始时间为1982年1月,步长为1个月]
VARS4 [共SLP、T、U、V 4个变量]
SLP 0 0 [SEALEVE LPRESSURE]
T 0 0 [TEMPS]
U 3 0 [UWINDS]
V 3 0 [VWINDS]
ENDVARS [结束变量说明标志]
2.3 批处理文件的编写
如果我们欲编制批处理文件时,则应注意在用写字板编写GS文件时,必须在各项命令两边加单引号。如绘制经度为40°E~150°E,纬度为-10°S~25°N,时间为1982年10月(第10时刻)的850 hPa等风速矢量图时,其批处理文件DAT.GS可以写成以下语句:
‘OPEN D:.CTL’
‘SET LON 40 150’
‘SET LAT -10 25’
‘SET TIME T 10’
‘SET LEV 850’
‘ENABLE PRINT D;.GMF’
‘SET GXOUT VECTOR’
‘SET CCOLOR 5’
‘DISPLAY U;V’
‘PRINT’
‘DRAW TITLE 10/1982 WINDS’
‘QUIT’
以上各项命令都可以根据自己的需要进行更改。比如:想要绘制经度为40°E~150°E,纬度为-10°S~25°N,时间为1984年6月的1 000 hPa气温场和温度场的合成流线图,就可以把以上的批处理文件改为:‘OPEN D:.CTL’,‘SET LON40 150’,‘SET LAT-10 25’,‘SET T 30’,‘SET LEV 1000’,‘ENABLE PRINT D;.GMF’,‘SET GXOUT CONTOUR’,‘SET CCOLOR 5’,‘SET CSTYLE 3’,‘DISPLAY T’,‘SET CSTYLE 1’,‘DISPLAY SLP’,‘PRINT’,‘DRAW TITLE 6/1984 WINDS’,‘QUIT’。
3 结语
当然,GRADS可以绘制的图形远不止这些,若固定经度、时间,让纬度、高度变化,则可以画出气象场的剖面图;若固定经、纬度和高度,让时间变化,则可以画出某气象要素场随时间的变化。另外,GRADS还可以通过调用函数名来直接绘制气象图形,如当设置显示命令“DISPLAY HCURL(U,V)”和“DISPLAY HDIVG(U,V)”时,就可以直接得出垂直涡度和水平散度图等。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)