如何在MATLAB中统一绘制窦?

Nik*_*nst 2 matlab

如果我像这样绘制窦

x=0:0.05:2*pi;
y=sin(x);
plot(x,y,'.-')
Run Code Online (Sandbox Code Playgroud)

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

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

Ram*_*nka 5

点密度均匀x.如果您希望这些点是统一的y,您可以使用:

y=-1:.05:1;
plot(asin(y),y,'o')
Run Code Online (Sandbox Code Playgroud)

但那时的分数并不统一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')
Run Code Online (Sandbox Code Playgroud)

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