在C中从对数转换为线性并取平均值

在C中从对数转换为线性并取平均值,c,logging,floating-point,double,coercion,C,Logging,Floating Point,Double,Coercion,我对C一点也不了解,我正在尝试编辑某人的代码,但在尝试将值从日志转换为线性域时遇到了问题 例如,假设我们有一个数组A,其中充满了等于-100 dB的日志值,即 float A[100]; int i; for( i=0; i<100; i++ ) A[i] = -100; float A[100]; int i; 对于(i=0;i,我刚刚发现了问题所在:我需要在程序顶部包含math.h库: #include <math.h> #包括 没有这一点,我认为log10

我对C一点也不了解,我正在尝试编辑某人的代码,但在尝试将值从日志转换为线性域时遇到了问题

例如,假设我们有一个数组A,其中充满了等于-100 dB的日志值,即

float A[100];
int i;

for( i=0; i<100; i++ )
    A[i] = -100;
float A[100];
int i;

对于(i=0;i,我刚刚发现了问题所在:我需要在程序顶部包含math.h库:

#include <math.h>
#包括

没有这一点,我认为log10函数没有引用,这反过来导致结果都是0。我现在包括math.h,一切似乎都很好。

刚刚发现问题所在:我需要在程序顶部包括math.h库:

#include <math.h>
#包括

如果没有这一点,我相信log10函数没有引用,这反过来导致结果都是0。我现在包括math.h,一切似乎都很好。

那段代码(或者说,编译的代码的一个版本)。你的错误一定在其他地方。你的程序在这里运行良好-
avg
显示为
-100
。我在你上次计算时确实必须修复变量名的拼写错误,但除此之外,它也很好。是的,当我使用在线编译器时,它也对我有效,所以不确定为什么它在我的设备上不起作用。可能定义了某个子例程以无法处理非常小的数字的方式处理浮点变量。这是什么设备/编译器?假设符合某种标准-检查FLT\u MIN,FLT\u MIN\u 10\u EXP。我认为Dmitri可能是正确的。检查您的float.h include文件(如果存在)。该代码(或者更确切地说,是编译代码的版本)。你的错误一定在其他地方。你的程序在这里运行良好-
avg
显示为
-100
。我在你上次计算时确实必须修复变量名的拼写错误,但除此之外,它也很好。是的,当我使用在线编译器时,它也对我有效,所以不确定为什么它在我的设备上不起作用。可能定义了某个子例程以无法处理非常小的数字的方式处理浮点变量。这是什么设备/编译器?假设符合某种标准-检查FLT\u MIN,FLT\u MIN\u 10\u EXP。我认为Dmitri可能是正确的。检查float.h include文件(如果存在)。