gpt4 book ai didi

N个数据之间的比较

转载 作者:太空宇宙 更新时间:2023-11-04 08:42:55 26 4
gpt4 key购买 nike

我要比较N个float类型的数据。这种比较必须在公差的情况下进行。

这意味着如果 2 个数据(N 个数据内)之间的差异小于或等于公差,则这 2 个数据将被视为有效,并且我得到一个数据,否则如果差异大于公差,则数据为无效。

你有什么想法吗?

这是我的代码:

 float mytab[N];
int i,j,index=0;
for (i = 0; i < N-1; i++)
{
for (j = i+1; j < N; j++)
{
if(tab[i].valid && tab[j].valid)
{
if ( ABS(tab[i]-tab[j])<= toleance)
{
mytab[index] = tab[i];
index++;
}
}
}
}

//after i search the min value of mytab which constain a
valid value within tolerance.

例子:

tolerance = 0.15;
Data: 20.005, 20.017, 21.20, 21.25, 25.75, 25.9, 20.1

在这个例子中,如果我们基于公差,我们可以选择 (20.005 OR 20.017 OR 20.1) OR (21.20 OR 21.25)。但是如果我们基于多数表决,我们选择 20... 而不是 21...

最佳答案

如果我理解你的基本问题,你需要比较两个 float 。我认为您与 ABS 很接近……但您需要浮点版本 fabs,可在 C99math.h 中找到。

#include <stdio.h>
#include <math.h>

int main (void)
{
float f1 = 1.00001;
float f2 = 1.00003;
float tol= 0.00010;

if (fabs(f1 - f2) <= tol) {
puts("Test1: f1 and f2 are equal-ish.");
} else {
puts("Test1: f1 and f2 are not equal-ish.");
}

tol= 0.0000001;
if (fabs(f1 - f2) <= tol) {
puts("Test2: f1 and f2 are equal-ish.");
} else {
puts("Test2: f1 and f2 are not equal-ish");
}
}

测试

$ cc -g -Wall -O0 -std=c99 -pedantic -o Test test.c && ./Test
Test1: f1 and f2 are equal-ish.
Test2: f1 and f2 are not equal-ish

关于N个数据之间的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22847719/

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