我正在尝试在MATLAB中重写一些python代码,python代码是这样的:
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]
我尝试进行MATLAB转换:
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
绝对不正确,但我不明白这里的意思是什么x3 [0] -x1 [-1]
)......所以在MATLAB中,数组以x3(1)
而不是x3(0)
开头,并且我知道没有像x1(-1)
这样的内容。
有人可以向我解释一下,也许可以向我建议我应该如何重写x2
,y2
,x4
,y4
。
答案 0 :(得分:2)
语法x[-1]
在Python中为数组中的最后一个元素编制索引。
要在MATLAB中实现此目的,您可以使用end
关键字
x(end)
答案 1 :(得分:1)
MATLAB索引从1
开始,而不是像{python&#39}那样在0
开始。所以它就是
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);
其中每个元素基本上都被索引为MATLABindex = PythonIndex-1
,并且正如其他人已经提到的那样,MATLAB选择数组中最后一个元素的方式是end