问题:如何将二维离散数据 经纬度【xi,yi】 形成的多条曲线或直线区分,可以理解为一个航迹区分问题
可能出现的情况:
(一:曲线与曲线相交、直曲相交、直直相交)
(二:两条线相交角度很小,难以区分)
这张图只是我在网上找的这的个例,我不是要拟合出来这个曲线。而是区分A航迹由哪些离散点,B航迹有哪些点.
根据数学常识不难看出,这是三个正弦波,x=0:4*pi,在蓝色正弦波sin(x)的基础上分别加减了0.5的幅度,以及2和5的相移。
对每个点的周围点进行曲线拟合,得到每个点的拟合曲线。
对于两条航迹的交点,根据交点处曲线的切线方向和交角大小来判断是否为真正的交点。
对于难以区分的相交航迹,可以计算交点周围一定范围内的距离,根据距离大小来判断是否为同一航迹。
绘制区分度曲线(Andrews Curve)python
可以参考下
自己找几个特殊点,然后求曲线方程?看你图像还是比较标准的
【以下回答由 GPT 生成】
我可以提供一个解决方案,使用数学方法来处理这个问题。具体步骤如下:
python import numpy as np import scipy.signal as signal import matplotlib.pyplot as plt
python # 生成3组曲线数据 x = np.linspace(0, 10, 100) y1 = np.sin(x) y2 = np.cos(x) y3 = np.sin(x) + np.cos(x)
python # 找到每条曲线上的峰值点 peaks1, _ = signal.find_peaks(y1) peaks2, _ = signal.find_peaks(y2) peaks3, _ = signal.find_peaks(y3)
python # 根据峰值点索引分组获取每条曲线的数据点 data1 = np.column_stack((x[peaks1], y1[peaks1])) data2 = np.column_stack((x[peaks2], y2[peaks2])) data3 = np.column_stack((x[peaks3], y3[peaks3]))
python # 绘制曲线和数据点 plt.plot(x, y1, label='Curve 1') plt.plot(x, y2, label='Curve 2') plt.plot(x, y3, label='Curve 3') plt.plot(data1[:, 0], data1[:, 1], 'ro', label='Data points 1') plt.plot(data2[:, 0], data2[:, 1], 'bo', label='Data points 2') plt.plot(data3[:, 0], data3[:, 1], 'go', label='Data points 3') plt.legend() plt.show()
这个解决方案会根据曲线上的峰值点将数据分组,并得到每条曲线对应的数据点。你可以根据实际数据进行调整,并根据需要对代码进行修改。
【相关推荐】