我对编程很新,并且认为我会尝试编写线性插值函数.
说我给出的数据如下:
x = [1, 2.5, 3.4, 5.8, 6]
y = [2, 4, 5.8, 4.3, 4]
Run Code Online (Sandbox Code Playgroud)
我想设计一个函数,它将使用Python在1和2.5之间,2.5到3.4之间线性插值,依此类推.
我试过通过Python教程,但我仍然无法理解它.
要在两个变量之间进行线性插值a并b给出一个分数f,我目前正在使用此代码:
float lerp(float a, float b, float f)
{
return (a * (1.0 - f)) + (b * f);
}
Run Code Online (Sandbox Code Playgroud)
我认为这可能是一种更有效的方法.我正在使用没有FPU的微控制器,因此浮点运算是在软件中完成的.它们相当快,但它仍然可以添加或增加100个周期.
有什么建议?
为了清楚起见,在上面的代码中,我们可以省略指定1.0为显式浮点文字.
我正在尝试用python创建一个热图.为此,我必须为可能值范围内的每个值分配RGB值.我想把颜色从蓝色(最小值)变为绿色到红色(最大值).
下面的图片示例解释了我如何考虑颜色组成:我们的范围从1(纯蓝色)到3(纯红色),2之间的颜色类似于绿色.

我读到了线性插值并编写了一个函数(或多或少)处理最小值和最大值之间的某个值的计算并返回RGB元组.它使用if和elif条件(这不会让我完全开心):
def convert_to_rgb(minimum, maximum, value):
minimum, maximum = float(minimum), float(maximum)
halfmax = (minimum + maximum) / 2
if minimum <= value <= halfmax:
r = 0
g = int( 255./(halfmax - minimum) * (value - minimum))
b = int( 255. + -255./(halfmax - minimum) * (value - minimum))
return (r,g,b)
elif halfmax < value <= maximum:
r = int( 255./(maximum - halfmax) * (value - halfmax))
g = int( 255. + -255./(maximum - halfmax) …Run Code Online (Sandbox Code Playgroud) 我在熊猫中有一个时间序列,如下所示:
Values
1992-08-27 07:46:48 28.0
1992-08-27 08:00:48 28.2
1992-08-27 08:33:48 28.4
1992-08-27 08:43:48 28.8
1992-08-27 08:48:48 29.0
1992-08-27 08:51:48 29.2
1992-08-27 08:53:48 29.6
1992-08-27 08:56:48 29.8
1992-08-27 09:03:48 30.0
Run Code Online (Sandbox Code Playgroud)
我想将其重新采样到一个规则的时间序列,步长为15分钟,其中值是线性插值的.基本上我想得到:
Values
1992-08-27 08:00:00 28.2
1992-08-27 08:15:00 28.3
1992-08-27 08:30:00 28.4
1992-08-27 08:45:00 28.8
1992-08-27 09:00:00 29.9
Run Code Online (Sandbox Code Playgroud)
但是,使用Pandas的重采样方法(df.resample('15Min')),我得到:
Values
1992-08-27 08:00:00 28.20
1992-08-27 08:15:00 NaN
1992-08-27 08:30:00 28.60
1992-08-27 08:45:00 29.40
1992-08-27 09:00:00 30.00
Run Code Online (Sandbox Code Playgroud)
我尝试了不同的'how'和'fill_method'参数的重采样方法,但从未得到我想要的结果.我使用了错误的方法吗?
我认为这是一个相当简单的查询,但我在网上搜索了一段时间,但找不到答案.
提前感谢您提供的任何帮助.
如果在OpenGL管道中的光栅化阶段发生线性插值,并且顶点已经转换为屏幕空间,那么用于透视正确插值的深度信息来自何处?
任何人都可以详细描述OpenGL如何从屏幕空间原语转换为具有正确插值的片段?
opengl projection linear-interpolation fragment-shader pixel-shading
我有一个时间序列问题,希望有人可以帮忙!
问题围绕着两组具有不同时间戳的数据.一组数据包含校准数据,另一组包含样本数据.校准比样品频繁得多.
我想要做的是将校准数据(低频率)插入采样时间序列(高频率).
sam <- textConnection("time, value
01:00:52, 256
01:03:02, 254
01:05:23, 255
01:07:42, 257
01:10:12, 256")
cal <- textConnection("time, value
01:01:02, 252.3
01:05:15, 249.8
01:10:02, 255.6")
sample <- read.csv(sam)
sample$time <- as.POSIXct(sample$time, format="%H:%M:%S")
calib <- read.csv(cal)
calib$time <- as.POSIXct(calib$time, format="%H:%M:%S")
Run Code Online (Sandbox Code Playgroud)
最大的问题(我看到)是数据的频率随机变化.
你们中的任何人都必须做类似的事吗?是否有chron或zoo功能可以实现我想要的功能(将低频率数据内插到更高的频率数据,其中两个ts都是随机的)?
下面是一个三次插值函数:
public float Smooth(float start, float end, float amount)
{
// Clamp to 0-1;
amount = (amount > 1f) ? 1f : amount;
amount = (amount < 0f) ? 0f : amount;
// Cubicly adjust the amount value.
amount = (amount * amount) * (3f - (2f * amount));
return (start + ((end - start) * amount));
}
Run Code Online (Sandbox Code Playgroud)
该函数将在起始值和结束值之间进行立方插值,给定量在0.0f - 1.0f之间.如果你要绘制这条曲线,你最终会得到这样的结果:
已过期Imageshack图像已删除
这里的三次函数是:
amount = (amount * amount) * (3f - (2f * amount));
Run Code Online (Sandbox Code Playgroud)
如何进行调整以产生两个切入的切线?
生成这样的曲线:(线性开始到立方结束)
已过期Imageshack图像已删除
作为一个功能
并像这样另一个:(立方开始线性结束)
已过期Imageshack图像已删除 …
我有一张特定日期的价格表:
Rates
Id | Date | Rate
----+---------------+-------
1 | 01/01/2011 | 4.5
2 | 01/04/2011 | 3.2
3 | 04/06/2011 | 2.4
4 | 30/06/2011 | 5
Run Code Online (Sandbox Code Playgroud)
我想让输出率基于简单的线性插值.
所以,如果我输入17/06/2011:
Date Rate
---------- -----
01/01/2011 4.5
01/04/2011 3.2
04/06/2011 2.4
17/06/2011
30/06/2011 5.0
Run Code Online (Sandbox Code Playgroud)
线性插值是 (5 + 2,4) / 2 = 3,7
有没有办法做一个简单的查询(SQL Server 2005),或者这种东西需要以编程方式完成(C#...)?
只是想知道是否已经实现了处理基础中的两个数字之间的线性插值的方法/ Xcode附带的其他内容?实现自己并不是一件先进的事情,但我通常会发现自己重新实现已经实现的东西,并且使用已经存在的功能(加上它更加标准化)是很好的.
所以我想要的是这样的:
lerp(number1, number2, numberBetween0And1);
// Example:
lerp(0.0, 10.0, .5); // returns 5.0
Run Code Online (Sandbox Code Playgroud)
它存在吗?
对于这个有点令人困惑的标题我很抱歉,但我不知道如何更清楚地总结这一点.
我有两组X,Y数据,每组都对应一般的整体值.它们是从原始数据中相当密集地采样的.我正在寻找的是一种为任何给定Y找到插值X的方法,用于我已经拥有的集合之间的值.
该图表使这一点更加清晰:

在这种情况下,红线来自对应于100的集合,黄线来自对应于50的集合.
我希望能够说,假设这些集合对应于一个值的梯度(即使它们显然由离散的X,Y测量值组成),我如何找到,例如,如果Y为500,X将在何处对于一个相当于75的值的集合?
在这里的例子中,我希望我想要的点在这附近:

我不需要这个功能过于花哨 - 它可以是数据点的简单线性插值.我只是在思考它时遇到了麻烦.
注意,两组的Xs和Ys都不完全重叠.然而,说"这些集合中最接近的X点在哪里"或"这些集合中最接近的Y点在哪里"是相当微不足道的.
我已经在已知值之间使用了简单的插值(例如,对于设置"50"和"100",找到相应Y的X,然后将它们平均得到"75"),我最终会看到如下所示:

很明显我在这里做错了.显然,在这种情况下,对于Y高于"最低"集的最大Y的所有情况,X(正确地)返回0.事情开始很好,但是当一个人开始接近最低Y时,它开始变得干扰.
我很容易理解为什么我的错了.这是另一种查看问题的方法:

在"正确"的版本中,X应该是大约250.相反,我正在做的基本上是平均400和0,所以X是200.在这种情况下如何解决X?我当时认为双线性插值可能会得到答案,但是我已经能够找到的任何内容都清楚地说明了我是如何去做这类事情的,因为它们似乎都是针对不同的问题而构建的.
谢谢您的帮助.请注意,虽然我已经在R中明显地绘制了上述数据,以便于查看我正在谈论的内容,但最终的工作是在Javascript和PHP中.我不是在找重物; 简单就是更好.