我有在不同时间和略有不同的位置获取的数据,因此高点和低点形成了一个“通道”。我正在尝试找到这些点的平均线,所以基本上在“通道”中间是什么
使用简单的5阶多项式拟合(numpy.polyfit(x,y,5)
),我得到以下结果,其中拟合恰好位于由两个数据点组成的“通道”的中间(因此,红线很ack在蓝点中间。
唯一的问题是,我排除了这个多边形拟合中相当关键的数据点,因为它弄乱了一切(这是半径= 1的管道中的流体流动。我不包括no-slip point,就是(1,0)
,并且确实弄糟了。)
要对此进行排序,我尝试使用样条拟合(scipy.interpolate.splrep
)。但是,在玩了一段时间之后,似乎只关心“通道”的上限值,直到x = 0.8为止:
^这是指定平滑度(splrep(x,y,s=5)
)
在数据中添加“防滑点”确实可以达到预期的效果(即,将高速数据映射为相同,但仍将边界层映射到墙),但是仍然存在其他问题:
样条曲线表示功能是否正常?如何兼顾高低点数据?
注意:图中的“文件点”仅是在特定点处评估的样条线。随意忽略它。
答案 0 :(得分:1)
弄清楚了。我没有按最低顺序->最高顺序排列数据。 splrep
函数仅考虑一半的数据,这是由于从csv导入数据时的顺序。
因此数据的组织方式为:
r V
0 0.92429 131.53931
1 0.88794 138.36454
2 0.83497 143.48595
3 0.75709 145.97411
4 0.69744 147.68532
5 0.63446 149.08677
6 0.56649 149.71351
7 0.51182 152.04439
8 0.45214 152.98041
9 0.38584 153.91706
10 0.25822 156.72013
11 0.13891 160.14254
12 0.01124 160.30995
13 0.11973 161.09784
14 0.26564 160.64686
15 0.36184 158.64068
16 0.42159 155.70073
17 0.49953 154.93309
18 0.55924 153.54353
19 0.61233 151.99828
20 0.67537 149.98889
21 0.74504 148.13517
22 0.80649 142.71477
23 0.88122 136.05535
0 1.00000 0.00000
因此,它仅考虑了数据点0-> 12。一旦我更改了它,然后将所得的样条线应用于所有数据:
拟合仍然很粗糙,但是现在我至少有一个起点。
编辑:这是经过一些平滑处理后的结果。注意,样条函数现在实际上在点之间传递: