gpt4 book ai didi

c - 如何使用线性插值在 C(SDCC 编译器)中构建查找表

转载 作者:太空狗 更新时间:2023-10-29 16:03:48 25 4
gpt4 key购买 nike

对于 LPC922 微 Controller (带有 SDCC),我想创建一个具有线性插值的查找表。假设我得到了 x 和 y 值,例如

x=300 y=10,0201 
x=700 y=89,542
x=800 y=126,452
x=900 y=171,453
x=1500 y=225,123

带有线性插值的查找表的代码看起来如何,所以我得到例如 x=850 的正确值 y ((171,453+126,452)/2)?

最佳答案

typedef struct { double x; double y; } coord_t;

coord_t c[5] =
{
{300, 10.02},
{700, 89.542},
{800, 126.452},
{900, 171.453},
{1500,225.123}
};

double interp( coord_t* c, double x, int n )
{
int i;

for( i = 0; i < n-1; i++ )
{
if ( c[i].x <= x && c[i+1].x >= x )
{
double diffx = x - c[i].x;
double diffn = c[i+1].x - c[i].x;

return c[i].y + ( c[i+1].y - c[i].y ) * diffx / diffn;
}
}

return 0; // Not in Range
}

int main(int argc, char** argv)
{
double y = interp( c, 850, 5 );
}

关于c - 如何使用线性插值在 C(SDCC 编译器)中构建查找表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7091294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com