2017-01-03 1 views
-1

konvertieren Ich versuche, einige Python-Code in MATLAB neu zu schreiben, ist die Python-Code wie folgt aus:ein Python-Code in MATLAB

theta = 0:pi/510:2*pi; 
phi = pi/3:2*pi/360:6*pi; 
phi_outer = np.linspace(CV.Outer.phi_min, CV.Outer.phi_max, 100) 
phi_inner = np.linspace(CV.Inner.phi_max, CV.Inner.phi_min, 100) 

x1, y1 = coords(phi_outer, geo, theta, CV.Outer.involute) 
t = np.linspace(0,1,100) 
x3, y3 = coords(phi_inner, geo, theta, CV.Inner.involute) 
x2 = (x3[0]-x1[-1])*t+x1[-1] 
y2 = (y3[0]-y1[-1])*t+y1[-1] 
x4 = (x1[0]-x3[-1])*t+x3[-1] 
y4 = (y1[0]-y3[-1])*t+y3[-1] 

Mein Versuch einer MATLAB-Konvertierung:

theta = 0:pi/510:2*pi; 
phi = pi/3:2*pi/360:6*pi; 
phi_outer = linspace(CV.Outer.phi_min, CV.Outer.phi_max, 100); 
phi_inner = linspace(CV.Inner.phi_max, CV.Inner.phi_min, 100); 
[x1, y1] = coords(phi_outer, geo, theta, CV.Outer.involute);  
[x3, y3] = coords(phi_inner, geo, theta, CV.Inner.involute); 
t = linspace(0,1,100); 
x2 = (x3(2)-x1(1)).*t+x1(1); 
y2 = (y3(2)-y1(1)).*t+y1(1); 
x4 = (x1(2)-x3(1)).*t+x3(1); 
y4 = (y1(2)-y3(1)).*t+y3(1); 

X2 , y2, x4, y4 sind absolut nicht korrekt, aber ich habe nicht verstanden, was hier gemeint ist x3 [0] -x1 [-1]) ... Also in MATLAB startet das Array mit x3(1) nicht x3(0) und es gibt n ich weiß wie x1(-1) wie ich weiß. kann mir bitte jemand erklären und mir vielleicht vorschlagen, wie ich die x2, y2, x4, y4 umschreiben soll.

+0

Python Aufzählung mit 0 beginnt. Wenn Sie nicht wissen, wie lange die Liste (oder was auch immer) ist, wählt -1 das letzte Element in der Sequenz aus. – mauve

+0

'x [-1]' bedeutet den letzten Wert des Arrays. In Matlab können Sie es in 'y3 (end)' konvertieren – iFlo

Antwort

2

Die Syntax x[-1] indiziert das letzte Element im Array in Python.

Um dies zu erreichen in MATLAB können Sie das end Stichwort

x(end) 
1

MATLAB Indizierung bei 1 beginnt verwenden, nicht 0 wie Python. Also würde es

x2 = (x3(1)-x1(end)).*t+x1(end); 
y2 = (y3(1)-y1(end)).*t+y1(end); 
x4 = (x1(1)-x3(end)).*t+x3(end); 
y4 = (y1(1)-y3(end)).*t+y3(end); 

sein, wobei jedes Element im Grunde als MATLABindex = PythonIndex-1 indiziert ist, und, wie bereits von anderen erwähnt, MATLAB Weg das letzte Element in einer Reihe von Auswahl ist end