C 绝对数组的Arduino函数?

C 绝对数组的Arduino函数?,c,arduino,C,Arduino,我的代码工作得很好,在我添加此函数之前,它会在串行监视器上输出 呼叫其停止发送到串行 函数使用输入数组的绝对值填充结果数组 #define INPUT_SIZE 800 void vabs(double *vec,int vsize,double *result){ int i; for(i=0 ; i<vsize ; ++i) result[i] = fabs(vec[i]); } double x1[INPUT_SIZE]; int x1size; double a

我的代码工作得很好,在我添加此函数之前,它会在串行监视器上输出 呼叫其停止发送到串行

函数使用输入数组的绝对值填充结果数组

#define INPUT_SIZE 800

void vabs(double *vec,int vsize,double *result){
  int i;
  for(i=0 ; i<vsize ; ++i)
    result[i] = fabs(vec[i]);
}

double x1[INPUT_SIZE];
int x1size;
double absX1[INPUT_SIZE];
int absX1size;

double Process(int *inputArray,double *qrs){
  int i;

  // Initialization
  for(i=0 ; i<INPUT_SIZE ; ++i)
    x1[i] = (double)inputArray[i];

  x1size = INPUT_SIZE;
  // Cancellation DC drift and normalization
  double meanValue = mean(x1,x1size);
  minus(x1,x1size,meanValue);

  Serial.println(x1[0]);

//  vabs(x1,x1size,absX1);  // Uncomment this line will cause the problem!
  absX1size = x1size;
  *qrs = 5;
  return 10;
}
我正在使用Arduino Mega(Atmega1280),它有128 KB的闪存和8 KB的SRAM。

而不是
fabs()
试试
(结果[I]<0?vec[I]*-1:vec[I])
,这将显示
fabs()中是否有问题


另外,这里似乎有很多不需要的代码。我想这是因为您删除了其他部分,以便在此处发布。

我怀疑您想要的是
fabs
,而不是
abs
。但不管怎样,你能更具体地说明你的问题吗?会发生什么?啊哈,当我使用这个功能时,串行监视器不会打印任何东西!!abs-用于整数。fabs-用于浮动/doubles@AfonsoTsukamoto:我编辑了它,但同样的问题@AfonsoTsukamoto-在这种情况下,
++i
i++
做同样的事情:它们增加
i
的值。它们在不使用表达式值的代码中是可互换的。也就是说,
intj=i++
intj=++i做两件不同的事情。但是在循环中,没有使用增量的结果。我已经尝试过了,但是遇到了相同的问题,串行监视器上没有任何内容!您是否从
Serial.println(x1[0])获取输出?aha,,来自此语句:)
void setup(){
  Serial.begin(9600);
  delay(1000);
}

void loop(){
  // This array contains 800 values
  int bArr[]= {59,259,259,250,250,250,83,83,...};
  double qrs = 0;
  double heartRate = Process(bArr,&qrs);
  delay(5000);
}