如何从MATLAB中的位置向量函数得到法向量

时间:2012-12-02 19:28:30

标签: matlab

我有这个等式:

f(t) = <x(t),y(t)>

我首先要做的是在某个时刻找出法向量t1。我如何在MATLAB中做到这一点?

然后我想在MATLAB中找出法向量和x轴之间的角度。如果我可以绕过寻找法向量并直接从f(t)求出角度,那可能会更好。

如果有一些矢量操作函数或者我可以使用的东西而不是手动获取x(t)和y(t)的导数,然后找到幅度和所有东西,那将是很好的。任何帮助都会很棒!

1 个答案:

答案 0 :(得分:0)

dxx的时间导数,即(x(t+1)-x(t-1))/(2dt)(当然也可以使用前向差异而不是中心差异),dy对应y的时间导数,你可以很容易地从矢量[dx,dy]中找到法线和x轴之间的角度,因为它的法线只是[-dy,dx]。

假设带坐标的n-by-1数组xy,请按以下步骤操作:

%# take the time derivative
dx = (x(3:end)-x(1:end-2))/2;
dy = (y(3:end)-y(1:end-2))/2;

%# create the normal vector
nvec = [-dy,dx];

%# normalize the normal vector
nvecN = bsxfun(@rdivide,nvec,sqrt(sum(nvec.^2,2)));

%# take the arc-cosine to get the angle in degrees (acos for radian)
%# of the projection of the normal vector onto the x-axis
angle = acosd(nvecN(:,1));