plot piecewise 3d function
Show older comments
Hey, my code is
if
clear
hbar = 6.582119e-01; % Planck constant (meV ps)
clf reset;
Delta = 1.0;
tau = 0.5;
o = 3./hbar;
A = 1;
[omega,d] = meshgrid(0:0.25:7,0:0.25:7);
syms k(omega) l_1(omega) l_2(omega)
k_0 = (omega-2.*Delta)./(omega+2.*Delta);
k(omega) = piecewise(2.*Delta<= omega, k_0, 0); % the 0 is just random to stay inside the definition interval of the elliptic functions; later I cut them off by the heaviside function
l_1_0 = (o-omega-2.*Delta)./(-omega+o+2.*Delta);
l_1(omega) = piecewise(o-2.*Delta<= omega, l_1_0, 0);
l_2_0 = (omega-o-2.*Delta)./(omega-o+2.*Delta);
l_2(omega) = piecewise(o+2.*Delta<= omega, l_2_0, 0);
[K,E] = ellipke(k(omega));
[L_1,F_1] = ellipke(l_1(omega));
[L_2,F_2] = ellipke(l_2(omega));
Resi_0 = pi./8.*((1+2.*Delta./omega).*E-(4.*Delta./omega).*K).*heaviside(omega-2.*Delta);
Resi_l_1 = -2.*pi./8.*A.*(((1+2.*Delta./(o-omega)).*L_1-(4.*Delta./(o-omega).*F_1).*heaviside(o-omega-2.*Delta)).*sin(o.*d));
Resi_l_2 = 2.*pi./8.*A.*(((1+2.*Delta./(omega-o).*L_2-4.*Delta./(omega-o).*F_2).*heaviside(omega-o-2.*Delta)).*sin(o.*d));
Resigma = Resi_0 + Resi_l_1 + Resi_l_2;
plot3(d,omega,Resigma); % I tried plot3 and fplot3, both with the same error
hold on
view(-35,45)
axis([-.5 10.5 -.5 10.5 0 1.5])
hold off
end
I really don't understand why matlab doesn't want to do what I want it to do...the error I get is:
if true
Error using plot3
Data must be numeric, datetime, duration or an array convertible to double.
Error in gamma (line 30)
plot3(d,omega,Resigma);
end
I would really appreciate any kind of help...
Accepted Answer
More Answers (0)
Categories
Find more on Assumptions in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!