Ich würde wirklich etwas Hilfe bei der Ausführung von Code in Python 3 geschrieben von Matlab. Mein Python-Code lädt verschiedene Bibliotheken und verwendet sie zur numerischen Integration einer Differentialgleichung (für den numpy Vektor: e_array). Der Python-Code, die ich mag würde von Matlab nennen, ist die folgende:Running Python-Code von Matlab
from numba import jit
from scipy.integrate import quad
import numpy as np
@jit(nopython = True)
def integrand1(x,e,delta,r):
return (-2*np.sqrt(e*r)/np.pi)*(x/np.sqrt(1-x**2))/(1+(delta+2*x*np.sqrt(e*r))**2)
@jit(nopython = True)
def f1(e,delta,r):
return quad(integrand1, -1, 1, args=(e,delta,r))[0]
@jit(nopython = True)
def runge1(e,dtau,delta,r):
k1 = f1(e,delta,r)
k2 = f1((e+k1*dtau/2),delta,r)
k3 = f1((e+k2*dtau/2),delta,r)
k4 = f1((e+k3*dtau),delta,r)
return e + (dtau/6)*(k1+2*k2+2*k3+k4)
time_steps = 60
e = 10
dtau=1
r=1
delta=-1
e_array = np.zeros(time_steps)
time = np.zeros(time_steps)
for i in range(time_steps):
e_array[i] = e
time[i] = i*dtau
e = runge1(e,dtau,delta,r)
Idealerweise würde ich dieses Python-Code in der Lage sein möchten zu nennen (pythoncode.py) in Matlab, als ob es sich um eine Funktion Matlab waren und füttere die Parameter: time_steps, e, dtau, r und delta. Ich würde mit einer Lösung sehr glücklich sein, die wie folgt aussieht:
e_array = pythoncode.py(time_steps = 60, e = 10, dtau = 1, r = 1, delta = -1)
wo pythoncode.py als Matlab-Funktion behandelt wird, die die Parameter nimmt, führt sie in den Python-Code und gibt den Matlab Vektor e_array.
Ich möchte darauf hinweisen, dass es mehrere zusätzliche Python-Codes gibt, die ich gerne von Matlab aus aufrufen könnte. Ich hoffe, dass ich anhand der Antworten zu diesem speziellen Python-Code eine Vorstellung davon bekommen kann . Eine verwandte Frage betrifft die Python-Bibliotheken, die ich im Python-Code verwende: Gibt es eine Möglichkeit, den Python-Code so zu "kompilieren", dass ich ihn in Matlab aufrufen kann, ohne die verwendeten Bibliotheken (zB die numba-Bibliothek) auf dem Computer zu installieren läuft der Matlab-Code?
Vielen Dank für die Unterstützung, Asaf
Haben Sie [die Dokumentation] gelesen (https://www.mathworks.com/help/matlab/matlab_external/call-python-from-matlab.html)? – Suever
@Suever Ich habe definitiv versucht, aber ich konnte nicht verstehen, wie man es benutzt. –
Alle Informationen zur Python-Schnittstelle sind [hier] (https://www.mathworks.com/help/matlab/call-python-libraries.html). Können Sie uns den Code zeigen, den Sie ausprobiert haben und der nicht funktioniert? – Suever