how do i plot the following in 3D

i have x and y which are matrices
i perform operations to get U which is a coulmn vector how do i plot it agaisnt x,y which are matices. the erro i get is that z must be a matrix not scalor or vector
x=-(ngrid/2:ngrid/2-1)*0.2
[X,Y] = meshgrid(x,x)
u%outputs coulmn vectors
my output U from my workspace is a coulu vector of 1x2001

7 Comments

How does U relate to x and y?
Tlotlo Oepeng
Tlotlo Oepeng on 28 May 2021
Edited: Tlotlo Oepeng on 28 May 2021
u is a wave travelling on the xy plane, after a series of analytical computations i get an output coordnatres of u
u is complex-valued . If you plot real(u) against imag(u) it will fill an ellipse that has a ratio of about 10 : 6.4
In order to plot in three dimensions, you would need to be able to relate individual X and Y values to individual uCopy values.
ussually we use mesh(x,y,abs(U).^2) to plot in this case it gives error
'U must be matrix"
heres the code
%% -- Initialize variabels --
delta = 0.4; % linear-loss coefficient
epsilon = 2.2; % cubic-gain coefficient
mu = 1; % quintic-loss parameter
v = 0.1; % accounts for the quintic self-defocusing quantic nonlinearity
beta = 0.5; % diffussivity term
D = 1; % group-velocity dispersion
gamma = 0; % accounts for the dispersion of the linear loss...
%% -- Define of Parameters --
ngrid = 2001; % number of grid
dt = 0.1; % change of time t
tmax = 200; % the maximum of time t
dx = 0.2; % step size in x
dy = 0.2; % step size in y
L = 50; % lenght of logitudinal space
ind = (-ngrid/2:ngrid/2-1); % Indices
t = 0:dt:tmax; % temporal Grid
kt = (2*pi/tmax)*[(0:ngrid/2) (-ngrid/2:-1)]; % temporal Grid in new domain using fftshift(so that wavw numbers correspond to
%variables..)
x = ind*dx; % Grid point along x
y = ind*dy; % Grid point along y
kx = (2*pi/L)*[(0:ngrid/2) (-ngrid/2:-1)]; % Grid point along x in new domain using fft
ky = (2*pi/L)*[(0:ngrid/2) (-ngrid/2:-1)];
[X,Y] = meshgrid(x,x)% Grid point along y in new domain using fft
%% -- ansatz--
U = exp(-0.5.*x.^2-0.5.*y.^2-0.5.*t.^2);
%% -- Function Handles for RK4 Scheme--
fU = @(U,z) (-delta+(i+epsilon).*(abs(U).^2).*U+(mu-i*v).*(abs(U).^4).*U);
%% -- Initial Conditions --
z(1) = 0;
%% -- Step Size --
dz = 0.1; % change of z
h = dz/2; % step size in z
zfinal = 100; % final of z
%% -- Update Loop --
for i = 1:ceil(zfinal/h)
% update time
z(i+1) = z(i) + h;
% update R & J
k1 = fU( z(i) , U(i) ); % first slope
k2 = fU( z(i)+h/2 , U(i)+h/2*k1 ); % second slope
k3 = fU( z(i)+h/2 , U(i)+h/2*k2 ); % third slope
k4 = fU( z(i)+h , U(i)+h*k3 ); % fourth slope
U(i+1) = U(i) + h/6*(k1+2*k2+2*k3+k4);
end
%% -- Fourier Transform --
for z=1:zfinal
u = U;
c = fftshift(fft(u)); % apply Fourier transform
c = exp(-h*((0.5*i+beta)*(kx.^2+ky.^2)+(0.5*i*D-gamma)*kt.^2)).*c; % multiply by e^D
u = ifft(fftshift(c)); % inverse Fourier
end
%% -- Plot --
figure (1);
mesh (x,y,abs(u').^2);
U = exp(-0.5.*x.^2-0.5.*y.^2-0.5.*t.^2);
You need to rewrite U in terms of X and Y instead of x and y . But X and Y are 2D and probably not the same size as t, so you would need to reshape t into the third dimension, or
[X, Y, T] = meshgrid(x, x, t);
U = exp(-0.5.*X.^2-0.5.*Y.^2-0.5.*T.^2);
But now U will be 3D and you need to summarize it down to 2D in order to use a surface plot.
k1 = fU( z(i) , U(i) ); % first slope
That whole section would need to be rewritten in terms of U being 3D.
thank you ill try to di that
how do i accept answer?

Sign in to comment.

 Accepted Answer

[Copied from comment]
U = exp(-0.5.*x.^2-0.5.*y.^2-0.5.*t.^2);
You need to rewrite U in terms of X and Y instead of x and y . But X and Y are 2D and probably not the same size as t, so you would need to reshape t into the third dimension, or
[X, Y, T] = meshgrid(x, x, t);
U = exp(-0.5.*X.^2-0.5.*Y.^2-0.5.*T.^2);
But now U will be 3D and you need to summarize it down to 2D in order to use a surface plot.
k1 = fU( z(i) , U(i) ); % first slope
That whole section would need to be rewritten in terms of U being 3D.

More Answers (0)

Categories

Find more on Mathematics in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!