Sommerfeld 发表于 2010-1-11 11:48

Munk声速剖面 声线绘制(matlab)

matlab代码
send = 100000;
ntheta   = 57;
theta = pi / 180 * linspace( -14.0, 14.0, ntheta );
zs = 1000.0;
c0 = 1501.4;
hold on;
for ith = 1:ntheta
   x0 = [ 0.0   zs   cos( theta( ith ) ) / c0   sin( theta( ith ) ) / c0 ];
   [ s, x ] = ode45( 'rayf', 0.0, send, x0 );
   plot( x( : , 1 ), x( : , 2 ),'r' );
   hold on;
end
hold off;
xlabel( 'Range (m)' )
ylabel( 'Depth (m)' )
view( 0, -90 );

function xdot = f( s, x )
eps = 0.00737;
c0= 1500;
z   = x( 2 );
xt= 2 * ( z - 1300 ) / 1300;
c   = c0 * ( 1 + eps * ( xt - 1 + exp( -xt ) ) );
c2= c^2;
dxtdz = 2 / 1300;
cz= c0 * eps * dxtdz * ( 1 - exp( -xt ) );
cr = 0;
xdot = zeros( 4, 1 );
xdot( 1 ) = c * x( 3 );
xdot( 2 ) = c * x( 4 );
xdot( 3 ) = -cr / c2;
xdot( 4 ) = -cz / c2;
上大学的时候“水声学原理”上有类似的图,现把程序写上,与大家分享。

baoliang747 发表于 2010-10-1 00:02

参考一下,最近在研究这个。。。

cloud2037 发表于 2012-5-4 09:45

这个程序不太明白啊,有没有详细点的解释?用的解的方程是哪个?

zcgflypig 发表于 2014-5-23 20:09

#在这里快速回复#看不懂,可以解析一下么?
页: [1]
查看完整版本: Munk声速剖面 声线绘制(matlab)