python - 如何使用平滑曲线连接近似圆形分布的点?
问题描述
我有一组 12 个点,它们以 (0, 0) 为中心,并以 30 度的间隔大致分布在一个圆圈中,如图所示。 十二点
我想使用平滑曲线来链接(通过)它们,如下图所示(我用手画了红线)。 红色的手绘曲线
我想用python或matlab制作。我分别尝试了上半部分和下半部分的一些插值方法,并希望将它们组合成一条完整的曲线。然而,结果总是过冲。
感谢您的任何建议!
解决方案
我认为这里的关键是要注意,您必须将其视为 2d 中的参数化曲线,而不仅仅是 1d 到 2d 函数。此外,由于它应该类似于圆形,因此您需要一种支持周期性边界的插值方法。这是适用的两种方法:
% set up toy data
t = linspace(0, 2*pi, 10);
t = t(1:end-1);
a = 0.08;
b = 0.08;
x = cos(t+a*randn(size(t))) + b*randn(size(t));
y = sin(t+a*randn(size(t))) + b*randn(size(t));
plot(x, y, 'ok');
% fourier interpolation
z = x+1i*y;
y = interpft(z, 200);
hold on
plot(real(y), imag(y), '-.r')
% periodic spline interpolation
z = [z, z(1)];
n = numel(z);
t = 1:n;
pp = csape(t, z, 'periodic');
ts = linspace(1, n, 200);
y = ppval(pp, ts);;
plot(real(y), imag(y), ':b');
推荐阅读
- regex - 正则表达式完全匹配一个单词
- python - 将位置数据添加到 S3 上的 csv 文件
- jquery - 获取jQuery中特定索引的选择框值
- python - 将函数分配给变量
- sql - 从不同行互换列中删除重复项
- laravel - 上传时未设置外观根
- python - ModuleNotFoundError:安装后没有名为“pgzrun”的模块?
- python - python关于win32api.SetConsoleCtrlHandler的问题
- php - 在 Woocommerce 店面类别档案中的产品下方显示 shorcode?
- c# - 我想在使用 ajax 的数据库的帮助下使用 .net mvc 在 Google Map 上显示脉冲动画