如何在MATLAB中统一绘制窦?

时间:2018-02-05 06:21:51

标签: matlab

如果我像这样绘制窦

x=0:0.05:2*pi;
y=sin(x);
plot(x,y,'.-')

我的点密度明显不均匀。请参阅附件。sin

我想要的是,这些点应该彼此相等。所以,我需要以某种方式定义x数组..还是有另一种方式?

1 个答案:

答案 0 :(得分:5)

x中的点密度是均匀的。如果您希望y中的点是统一的,则可以使用:

y=-1:.05:1;
plot(asin(y),y,'o')

但是x中的点数并不统一。

编辑:为了娱乐或为了将来的读者,为了在整个距离内获得均匀的点,点之间的距离为d=sqrt(h^2+(f(x+h)-f(x))^2),大约为d=h*sqrt(1+f'(x)^2),即h=d/sqrt(1+cos(x)^2)在这种情况下。曲线长度是sqrt(1+f'(x)^2)的积分,在本例中为4*sqrt(2)*ellipticE(1/2) = 7.6404

N = 100;
d = 7.6404/N;
x = zeros(1,N);
for n = 2:N
    x(n) = x(n-1) + d/sqrt(1+cos(x(n-1))^2);
end
y = sin(x);
plot(x,y,'x')

通过查看sqrt(diff(y).^2+diff(x).^2),您可以检查点之间的距离是近似恒定的。它只是近似的,因为距离使用了导数(在间隔的左端点处),但随着N的增加,这会变得更好。为了获得精确的距离,我们需要在数值上求解每个点的trig方程。曲线长度也受近似值的影响,并且往往会错过最后一点。