I have a table titled "psytable_moist_air" shown below:
我正在尝试开发一个 MySQL 语句,该语句将在记录之间插入一个值。(编辑:如果用 PHP 进行数学计算更容易,我也愿意接受该解决方案!]
Example:我想知道“T”= 17.8 时的“hda”值。
请注意,没有“T”=17.8 的记录。但是,因为该表是线性相关的,所以我可以获得“T”=17 处的“hda”值和“T”=18 处的“hda”值,并对这些值进行线性插值。
数学结果如下所示:
(获取“hda”值,其中 T=17:hda = 17.102)
(获取“hda”值,其中 T=18:hda = 18.108)
EDIT:
我能想到的唯一方法是执行两个 MySQL 语句来获取较小和较大的值:
SELECT MAX(`T`), MAX(`hda`) FROM `psytable_moist_air` WHERE `T`<17.8
SELECT MIN(`T`), MIN(`hda`) FROM `psytable_moist_air` WHERE `T`>17.8
然后我将使用这两个值进行插值。这可行,但似乎效率很低。有人能想出更好的解决方案吗?
如果有人有任何建议,将不胜感激!
.
我最近不得不这样做,因为没有 PHP 答案:
function CalcLinearInterpolation($x1, $y1, $x2, $y2, $t){
$n = ($x2 - $x1);
$j = ((($t - $x1) / ($n / 100)) / 100);
$r = $y1 + ($j*($y2 - $y1));
return $r;
}
CalcLinearInterpolation(2, 5, 3, 9, 2.5)
将返回 7
说清楚;
2 (x1) = 5 (y1)
3 (x2) = 9 (y2)
2.5 (t) = Result
So: CalcLinearInterpolation($x1, $y1, $x2, $y2, $t)
在这种情况下;
CalcLinearInterpolation(2, 5, 3, 9, 2.5)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)