Hey, my code is
ifclearhbar = 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 onview(-35,45)axis([-.5 10.5 -.5 10.5 0 1.5])hold offend
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 plot3Data 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…
Best Answer