我试图传递给Python的Matlab代码是。
e=1.602*10^(-19);
m_e=9.109*10^(-31);
c=2.998*10^8;
lambda_u=0.0314; % in m Undulatorwellenlänge
N_u=12; %Anzahl Undulatoren
B_0=0.98; %Peak Magnetfeld
K=2.84; %e*B_0*lambda_u/(2*pi*m_e*c); % formale Definition
k_u=2*pi/lambda_u;
gamma=1614; %gamma Faktor
beta=0.9; %beta Faktor
beta_bar=(1-1/(2*gamma^2)*(1+K^2/2)); %gemittelter beta Wert
w_u=beta_bar*c*k_u;
gamma_bar=gamma/(sqrt(1+K^2/2)); %gemittelter Gamma wert
w_star=gamma*c*k_u/(sqrt(1+K^2/2)); %Frequenz im bewegten System
%% Lambda_l in Abhängigkeit des Winkels theta
%
%axes('NextPlot', 'add')
theta=linspace(0,0.00785398,1000);
for gamma=500:500:2500
lambda_1_mod=lambda_u./(2*gamma.^2)*(1+K.^2/2+gamma.^2*theta.^2);
hold on
figure(7)
plot(theta, lambda_1_mod)
hold off
%xlim([-1 1])
%ylim([-1 1])
xlabel('$\theta \,\mathrm{in}\,\mathrm{rad}$','Interpreter','latex')
ylabel('$\lambda_l \,\mathrm{in}\,\mathrm{m}$','Interpreter','latex')
title('$\lambda_l\, \mathrm{in\, Abhaengigkeit\, des\, Winkels}\, \theta$','interpreter','Latex')
end
legend('$\gamma=500$','$\gamma=1000$','$\gamma=1500$','$\gamma=2000$','$\gamma=2500$','Interpreter','latex','Location','Best')
我是用Python写的
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import Normalize
import math
#FLASH 2 Parameter
e=1.602*(10**-19)
m_e=9.109*(10**-31)
c=2.998*10**8
lambda_u=0.0314
N_u=12 #Anzahl Undulatoren
B_0=0.98 #Peak Magnetfeld
K=2.8 #e*B_0*lambda_u/(2*pi*m_e*c);
k_u=2*math.pi/lambda_u
gamma=1614
beta=0.9 #beta Faktor
beta_bar=(1-1/(2*gamma^2)*(1+K**2/2)) #gemittelter beta Wert
w_u=beta_bar*c*k_u
gamma_bar=gamma/(math.sqrt(1+K**2/2)) #gemittelter Gamma wert
w_star=gamma*c*k_u/(math.sqrt(1+K**2/2)) #Frequenz im bewegten System
# Lambda_l in Abhängigkeit des Winkels theta
fig = plt.figure()
def labda_1_mod(theta, gamma):
return lambda_u/(2*gamma**2)*(1+K**2/2+gamma**2*theta**2)
theta = np.array([0,0.00785398,1000])
for gamma in range(500,2500,500):
plt.plot(theta,gamma)
plt.xlabel('theta')
plt.ylabel('labda_1_mod')
plt.title('Test')
plt.grid(True)
plt.savefig("test.png")
plt.show()
现在我收到错误信息:x和y必须有相同的第一维度,但有形状(3,)和(1,)我理解错误信息,但由于我对Python非常陌生,我不知道如何修正我的语法。