[英]Arduino function absolute of array?
我的代码运行良好,并在串行监视器上提供输出,直到我添加此函数调用为止才停止发送到串行!
该函数使用输入数组的绝对值填充结果数组。
#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;
}
设置和循环:
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);
}
我正在使用具有闪存128 KB和SRAM 8 KB的Arduino Mega(Atmega1280)。
代替fabs()
试试(result[i] < 0 ? vec[i] * -1 : vec[i])
,这将向您显示fabs()
是否存在问题。
旁注,这里似乎有很多不需要的代码。 我假设这是因为您删除了要在此处发布的其他部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.