之前有写一篇博客,主要讲解曲线拖拽相关的内容,其模仿对象就是海思PQTool中Gamma曲线调试模块(如图1所示)。就海思PQTool-Gamma曲线调试模块而言,个人认为是非常好用的。我们可以通过Gamma COEFFI和Slope at zero两个参数生成基础的Gamma曲线;然后再根据实际需求,对Gamma曲线进行手动调整。在此过程中,包含了Gamma曲线数据生成、Gamma曲线数据插值、Gamma数据调整等功能。其中Gamma数据生成和Gamma曲线数据插值是我非常感兴趣的部分,也是以下将要分析的内容。
一、Gamma数据生成方式
图2所示的Gamma曲线,其Gamma COEFFI都等于0.45,通过改变Slope at zero参数得到的结果,从左到右依次为4.5、1.242、0.533。将曲线由图2-(a)调整到图2-(b)的过程中,猜测曲线的形状变化规律如下面公式所示
y = x γ + 1 k \begin{gathered} y = x^{\gamma + \frac{1}{k}} \end{gathered} y=xγ+k1
其中k表示Slope at zero。不过随着Slope at zero参数值的减小,曲线变化规律并不符合预期。
当Slope at zero数据固定,改变Gamma COEFFI的大小,数据变化与上述公式去掉 1 k \frac{1}{k} k1后的数据变化趋势类似。对于Gamma数据生成这个问题的具体情况,目前还没探究清楚,准备后续在多查阅一些资料,看看能不能找到匹配的规律。
二、数据插值方式
关于数据插值方式有很多,常见的有拉格朗日插值、牛顿迭代插值、三次样条插值、分段三次埃尔米特插值等等。由于三次样条插值出来的数据平滑性比较好,故以此为依据,做了以下的小实验,确认海思PQTool中,Gamma数据的插值方式。
首先,用默认的Gamma COEFFI和Slope at zero参数生成了一条默认曲线,并将数据点调整至5个,然后将倒数第二个点的数据设置成4095,得到的曲线变化趋势如图3-(a)所示。将5个数据点的数据取出,用matlab对得到的数据分别进行三次样条插值、分段三次埃尔米特插值计算,得到图3-(b)所示的结果,不难发现Gamma曲线的插值方式更像分段三次埃尔米特插值插值的结果。不过两种插值方式的数据很相近,不能说明具体使用的是那种插值方式,毕竟将三次样条插值的数据做范围限制也可得到类似的曲线变化。
为了进一步确认Gamma曲线的插值方式,便将第三个数据点设置成0,得到图4-(a)所示的结果。同时用matlab对数据分别进行三次样条插值、分段三次埃尔米特插值计算,得到的结果如图4-(b)所示。对比左右两幅图,很容易发现,PQTool-Gamma曲线的插值方式与分段三次埃尔米特插值更相似。
不过仔细对比上述两幅图,会发现数据的变化趋势虽然很相似,但是依旧存在细微的差别,尤其是第三个数据点附近。个人猜测是因为PQTool中的曲线显示控件引起的。
个人声明:
以上内容,纯属个人观点,不喜勿喷。未经本人同意,不得私自转载。博客中出现的代码仅供学习参考,不得有其他用途。若文中存在纰漏,或读者有更好的建议,欢迎留言探讨。也可邮箱联系:yxyx_0212@163.com