我想在matlab中绘制一个流函数

时间:2014-06-27 04:57:08

标签: matlab plot contour

我正在使用此代码捕捉来绘制流函数

[X,Y]= meshgrid(linspace(0,80),linspace(-8,8));
[t]=meshgrid(linspace(0,100));
B=1+0.3*cos(0.9*t);
k=2*phi/10;
low=.1+k.^2.*B.^2.*sin(k.*(X-0.9.*t)).^2;
PSI=-tanh((Y-B.*cos(k.*(X-0.9.*t)))./sqrt(low));
contour(X,Y,PSI,3);
colormap cool

我想要像图片一样的东西。我只得到当前的(罪形状线)而不是涡旋(矩形)。 enter image description here enter image description here

1 个答案:

答案 0 :(得分:3)

我尝试使用显示的参数生成绘图,但我没有设法获得" vortex"轮廓图中的形状。这是我的实施:

len = 200;
[X,Y] = meshgrid(linspace(0,80,len), linspace(-8,8,len));
t = meshgrid(linspace(0,1,len));

a = 1.2;
c = 0.12;
k = 2*pi/7.5;
w = 0.4;
e = 0.3;

B = a + e * cos(w*t);
D = k * (X - c*t);
PSI = - tanh((Y - B.*sin(D)) ./ sqrt(1 + (k * B.*cos(D)).^2)) + c*Y;

figure('Position',[100 100 650 300])
movegui('center')

subplot(211)
contour(X, Y, PSI, 10), ylim([-4.5 4.5])
%colormap cool
xlabel('kilometers'), ylabel('km'), title('Mobility Model')

subplot(212), axis off
text(0.5, 0.5, ...
    {['$\psi(x,y,t) = -\tanh{[ \frac{y - B(t) \sin(k(x-ct))}' ...
    '{\sqrt{1 + k^2 B^2(t) \cos^2(k(x-ct))}} ]} + cy$'];
    '$where\, B(t) = A + \epsilon cos(\omega t)$'}, 'Interpreter','latex', ...
    'FontSize',20, 'Horizontal','center', 'Vertical','middle')

matlab_contour_plot


<击> 这导致我相信您显示的屏幕截图与其下方的等式/参数不完全匹配...

事实上,如果我们查看3D中的曲面图,您会发现曲线中没有形状看起来像正弦曲线之间的那些三角形。它只是两个几乎平坦的飞机,两者之间有凹陷的下降。

这是二维函数,显示为曲面图:

surf(X, Y, PSI, 'FaceColor','interp', 'EdgeColor','none')
daspect([20 6 1])
axis vis3d, axis tight
box on, grid on, view(140,30)
xlabel X, ylabel Y, zlabel PSI
lighting phong
camlight left

surface_3d