目前我正在学习 Perl 和 gnuplot。我想知道如何根据下一个值计算某个值。例如,我有一个文本文件包括:
#ID(X) Y
1 1
3 9
5 11
输出也应该显示未知 ID 的值。所以,输出应该显示:
#ID(X) Y
1 1
2 5
3 9
4 10
5 11
ID#2 的 Y 基于以下公式:((2-3)/(1-3))*1 + ((2-1)/(3-1))*9,即线性代数
Y2=((X2-X3)/(X1-X3))*Y1 + ((X2-X1)/(X3-X1)) * Y3
ID#5 也是如此
目前我有这个代码,
#! /usr/bin/perl -w
use strict;
my $prev_id = 0;
my $prev_val = 0;
my $next_id;
my $next_val;
while (<>)
{
my ($id, $val) = split;
for (my $i = $prev_id + 1; $i < $next_id; $i++)
{
$val = (($id - $next_id) / ($prev_id - $next_id)) * $prev_val + (($id - $prev_id) / ($next_id - $prev_id)) * $next_val;
printf ("%d %s\n", $i, $val);
}
printf ("%d %s\n", $id, $val);
($prev_val, $prev_id) = ($val, $id);
($next_val, $next_id) = ($prev_val, $prev_id);
}