splrep只考虑上点?

2024-04-29 22:18:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有在不同的时间和地点采集的数据,所以高点和低点形成一个“通道”。我试图找到这些点的平均线,所以基本上在“通道”的中间是什么

使用一个简单的5阶多项式拟合(numpy.polyfit(x,y,5)),我得到了以下结果,拟合正好沿着由两个数据点形成的“通道”的中间(因此红线正好位于蓝色点的中间)。 Polyfit attempt

唯一的问题是,我排除了这个多边形拟合中相当关键的数据点,因为它会搞乱一切(这是半径为1的管道中的流体流动。我排除了no-slip point,这将是(1,0),并真正搞乱拟合)

为了对其进行排序,我尝试使用样条曲线拟合(scipy.interpolate.splrep)。但是,在使用它一段时间后,它似乎只关心“channel”的上限值,直到x=0.8: spline fit 1

^这没有任何设置更改(所以只需splrep(x,y)spline fit 2

^这是指定一些结(splrep(x,y,t=knotsspline fit 3

^这是指定平滑度(splrep(x,y,s=5)

将“无滑移点”添加到数据中确实会产生预期效果(即绘制相同的高速数据,但仍将边界层绘制到墙),但我们仍存在其他问题: spline fit with no-slip point

这是样条线表示函数的正常行为吗?如何使其同时考虑高点和低点数据

注:图中的“文件点”只是在特定点处计算的样条曲线。别介意


Tags: 数据numpy时间绘制多边形关键蓝色样条
1条回答
网友
1楼 · 发布于 2024-04-29 22:18:58

我想出来了。我至少没有数据->;最好的命令。由于从csv导入数据时的顺序,splrep函数只考虑了一半的数据

因此数据组织如下:

          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.一旦我改变了这一点,结果样条线就应用于所有数据:

enter image description here

现在我至少有了一个出发点

编辑:这是经过平滑处理后的结果。请注意,样条函数现在实际上在点之间传递:

Smoothed spline

相关问题 更多 >