es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Implementación de un bucle Matlab a un bucle Python.

Estoy tratando de convertir el siguiente bucle de Matlab a Python

N = 7;
for j = 1:10001
E(j) = 0.0 + j * 0.01;
for i=1:N
k(i) = sqrt(2meeV2Jmeff(E(j)-V(i)))/hbar;
end
for n=1:(N-1)
p(1,1) = 0.5(1+k(n+1)/k(n))exp(-1ik(n)L(n));
end
T(j) = (abs(1/P(1,1)))^2;
end

Sé que Python tiene un bucle “for”, como

E = []
K = []
for j in range(10001):
for i in range(N):
E.append(0.0+j0.01)
V.append(sqrt(2
meeV2Jmeff*(E(j)-V(i)))/hbar)

pero no sé cómo “terminar” cada bucle como en Matlab?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    En Python, no es necesario especificar un End para los bucles como en Matlab, en su lugar, se utiliza el nivel de indentación para especificar el alcance de un bucle. El código anterior puede ser modificado de la siguiente manera para reproducir la funcionalidad del bucle de Matlab en Python:

    N = 7
    for j in range(10001):
        E = 0.0 + j*0.01
        k = []
        for i in range(N):
            k.append(sqrt(2*me*eV2J*meff*(E-V[i])) / hbar)
        p = []
        for n in range(N-1):
            p.append(0.5 * (1+k[n+1]/k[n]) * exp(-1j*k[n]*L[n]))
        T = (abs(1/p[0]))**2
    

    Tenga en cuenta que el código de Matlab no incluye algunas definiciones de variables, por lo que tuve que hacer algunas suposiciones sobre sus valores o inicialización para traducirlo a Python. También es importante inicializar k y p como listas vacías antes de usarlas en el bucle.

Comments are closed.