MATLAB - Contour plot

  • #1
57
0

Main Question or Discussion Point

I'm trying to generate contours that plot with the animation using contour(X,Y) but it's not quite working. I only need it to be in the x-y plane at 0km depth (see picture for greater clarification)

Matlab:
% A script to plot two 3D waves.

clear
%Define the total time for simulation
T_total=10;
%Set the computation increment
dt=0.1;
%calculate the number of steps
ntstep=T_total/dt+1;
%Define Input Waves
alphaa=1;  %velocity of wave a
alphab=2;  %velocity of wave a

fa=1;       %frequency of wave a
fb=0.5;       %frequency of wave b
ampa=6;     %amplitude of wave a in cm
ampb=3;     %amplitude of wave b in cm

%set the source depth
depth=1;

%Calc wave parameters using input
Ta=1/fa;    %period of wave a
Tb=1/fb;    %period of wave a
wa=2*pi*fa; %angular frequency of wave a
wb=2*pi*fb; %angular frequency of wave b
la=Ta*alphaa;%wavelength of wave a
lb=Tb*alphab;%wavelength of wave b
ka=2*pi/la; %wavenumber of wave a
kb=2*pi/lb; %wavenumber of wave b

x=(-10:1:10);        %x
y=(-10:1:10);        %y
z=(-20:1:0);        %z
t=zeros(length(x),length(y), length(z));        %start time
% setup the figure
figure(1);

%label axes
xlabel('Distance (m)');
ylabel('Distance (m)');
zlabel('Depth (m)');
hold on
[X,Y,Z]=meshgrid(x,y,z);
R=sqrt(X.^2+Y.^2+(Z+depth).^2);
contour3(X,Y,R);
%loop over nsamp
for n=1:ntstep
    t=t+dt; %time
    arga=wa*t-ka*R; %argument of wave a
    argb=wb*t-kb*R; %argument of wave b
    a=ampa*sin(arga)./max(1,R);
    a(R>t.*alphaa)=0; % causality condition
    a(R<t.*alphaa-la/2)=0; % limit lenght of input wave to one half cycle
    b=ampb*sin(argb)./max(1,R);
    b(R>t.*alphab)=0; % causality condition
    b(R<t.*alphab-lb/2)=0; % limit lenght of input wave to one half cycle
  
    figure(1);
    hold off;
  
    wf=a+b;
    slice(X,Y,Z,wf,x,y,z);
    axis square;
    shading INTERP
    caxis([0,1]);
    colormap([[0:0.1:1]',zeros(length([0:0.1:1]'),1),zeros(length([0:0.1:1]'),1)]);
    col=colorbar;
    alpha(0.05);
    hold on;
    %label axes
    xlabel('Distance (km)');
    ylabel('Distance (km)');
    zlabel ('Depth (km)');
    ylabel(col,'Amplitude (cm)'); % label the colour bar

  
  
    title(strcat('time = ', num2str(t(1)), ' s'));
    pause (dt);

end



CppFJgg.jpg
 

Answers and Replies

  • #2
57
0
Ah, all it was was a simple case of adding

Matlab:
contour(X(:,:,21),Y(:,:,21),wf(:,:,21));
 

Related Threads on MATLAB - Contour plot

  • Last Post
Replies
2
Views
3K
  • Last Post
Replies
0
Views
7K
Replies
0
Views
3K
Replies
3
Views
3K
Replies
6
Views
70K
Replies
1
Views
2K
  • Last Post
Replies
3
Views
705
Replies
5
Views
1K
Top