我正在使用python读取netcdf文件,并需要使用python中的matplotlib库绘制图表。netcdf文件包含3个变量:u、v和w组件。我必须在垂直的尺度上画出这三个组件。由于这些数据将被用于天气预报雷达,所以我需要在拐角处用光滑的曲线来绘制这些图表。现在情节看上去
代码是.
from netCDF4 import Dataset
from pylab import *
import numpy
from scipy import interpolate
from scipy.interpolate import spline
#passing the filename
AutoCAD允许将样条实体存储在仅由拟合点定义的DXF文件中,问题是样条定义具有无限的数值正确解,Autodesk不提供从给定的拟合点计算所需参数所需的信息。
tl;dr -缺失的信息是估计的开始和结束切线的方向和大小输入切线的全局B样条插值的末端导数,谁能帮助计算这个值吗?
我使用BricsCAD进行测试,但是"Trueview 2020“显示了相同的结果。
1.设想情况
只给出拟合点,使用不受任何约束的全局曲线插值,得到由控制顶点定义的样条:
# First spline defined by control vertices interpolated from given f
我在三维空间中有N个点。我要用一条线加入他们。然而,如果我用一条简单的线条去做,它是不光滑的,而且看起来很难看。
我目前的方法是使用Bezier曲线,对4点使用DeCasteljau算法,并对数据集中的每组4点运行该曲线。然而,问题在于,由于我分别在1-4、5-8、9-12等点上运行,所以这条线在4-5、8-9等之间并不平坦。
我还寻找其他方法;具体而言,我找到了关于Catmull样条的,它似乎更适合我的目的,因为曲线通过所有控制点,不像Bezier曲线。所以我几乎开始实现它,但是后来,我在那个站点上看到这个公式是"assuming uniform spacing of control
所以我有一个由N个数组组成的大集合,每个数组的长度为N_pix。我想在Python语言中的所有数组之间进行插值(即执行N_pix插值,每个数组有N个数据点)。
问题是每个数组都非常大(每个数组可以高达100sMB,其中有100个数组),所以我希望避免将它们全部读取到内存中。
我最初的想法是使用生成器表达式逐个读取大文件,并将生成器传递给插值例程:
def read_data_from_disc(paths):
# Cycle through paths, and yield each large array
for path in paths:
yield
我想用B样条来计算numpy中闭曲线的曲率。为了得到一个平滑的结果,我想对样条表示上的导数而不是数据进行评估。但是,下面的代码返回一个错误:
Traceback (most recent call last):
File "<stdin>", line 16, in <module>
File "/Users/jfl/anaconda/lib/python2.7/site-packages/scipy/interpolate/fitpack.py", line 1212, in splder