typical mesh generation and surf plot ?
3 ビュー (過去 30 日間)
古いコメントを表示
Hello. I'd like to ask you how can I make the typical mesh and its 3D figure in the following code:
clc; clear; close all;
tic;
h0 = 1.0;
g = 20;
a1 = 1; % dimensionless amplitude
a2 = 0.1; % dimensionless amplitude
c0 = sqrt(g*h0); % dimensional velocity
v1 = sqrt( 1 + 2*a1/3);
P1 = 2*a1*h0/3;
Q1 = sqrt(a1/2)/(v1*h0);
R1 = v1*sqrt(g*h0);
%
x1 = 0; % initial position
beta = 0.1;
it_M = 21;
ep = 16;
%%Domain
% x domain
x_max = 20; x_min = -10;
% x = (x_min:0.5: )
N1 = 61;
x = linspace(x_min,x_max, N1)';
dx = x(2) - x(1);
% t domain
t_max = 1; N2 = 11;
t = linspace(0, t_max, N2)';
dt = t(2) - t(1);
% k domain
k_max = 2; N3 = 201;
k = linspace(0, k_max, N3)'*pi;
dk = k(2) - k(1);
% omega
ga = sqrt( (c0^2*k.^2 + beta)./(1+h0^2*k.^2/3) );
%%linear solution
u_con = zeros(N1, N2);
for n2 = 1:N2
u_con(:, n2) = P1*(sech(Q1*(x - R1*t(n2) - x1))).^2 ;
end
figure;
surf(x, t, u_con', 'linestyle', 'none')
xlabel('$x$', 'Interpreter', 'latex', 'fontsize', 18)
ylabel('$t$', 'Interpreter', 'latex', 'fontsize', 18)
zlabel('$\eta_{linear}$', 'Interpreter', 'latex', 'fontsize', 18)
axis tight
view(-10, 70)
set(gca,'fontsize', 18,'FontName','times')
R1 = -5; R2 = 5;
dxo = 0.5; dxn = 0.1;
xnew = [x_min:dxo:R1, R1+dxn:dxn: R2, R2+dxo:dxo:x_max]';
eta1n = P1*(sech(Q1*(xnew - x1))).^2; % soliton
eta2n = 2*P1*Q1*R1*(sech(Q1*(xnew - x1))).^2.*tanh(Q1*(xnew - x1));
figure;
plot(xnew, eta1n, 'k*-', 'markersize', 3)
hold on
plot(xnew, eta2n, 'ro-', 'markersize', 3)
hold on
xlabel('$x$', 'Interpreter', 'latex', 'fontsize', 18)
ylabel('$\eta_2$', 'Interpreter', 'latex', 'fontsize', 18)
axis tight
% ylim([-0.1 0.1])
set(gca,'fontsize', 18,'FontName','times')
N1n = (R1 - x_min)/dxo + (R2 - R1)/dxn + (x_max - R2)/dxo + 1;
u_new = zeros(N1n, N2);
x_ax = u_new;
R1 = -5; R2 = 5;
dxo = 0.5; dxn = 0.1;
for n2 = 1:N2
x_ax(:, n2) = [x_min:dxo:R1 + 5*dt*(n2-1), R1+5*dt*(n2-1)+dxn:dxn: R2+5*dt*(n2-1), ...
R2+dxo+5*dt*(n2-1):dxo:x_max]';
u_new(:, n2) = P1*(sech(Q1*(x_ax(:, n2) - R1*t(n2) - x1))).^2 ;
end
If you process it you can find a soliton which looks likes a bell. I want to make the mesh as attached figure. That is, in the region [R1, R2], the mesh is finer than that of outside one and it moves according to the moving solitary wave. I want to concentrate only on the significant region.
I hope to plot it as Figure 1 however I can't, so I hope you help me to improve it. I'm looking forward to hearing from you..^^
0 件のコメント
採用された回答
Ed Marquez
2017 年 2 月 21 日
Hey,
I am assuming you are using MATLAB R2016b. The simplest way to quickly try several plotting options would be to do the following:
1. Redefine the transpose of u_con:
u_con2 = u_con';
2. In the workspace, simultaneously select the variables x, t, and u_con2 in that order (while holding the CTRL key).
3. Go to the PLOTS tab and try the plot that best meets your needs. You can also customize the appearance of the mesh plot by specifying property-value pairs.
https://www.mathworks.com/help/releases/R2016b/matlab/ref/chartsurface-properties.html
4. In addition, you can check the documentation of the mesh (or any other) plot function:
https://www.mathworks.com/help/releases/R2016b/matlab/creating_plots/types-of-matlab-plots.html
I think this will help you customize your mesh plot.
0 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Calculus についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!