我已经为 FIR 滤波器编写了一个函数,它有一个数组作为输入,另一个数组作为输出。这是我的 FIR 滤波器函数:
float * filter(float PATIENTSIGNAL[],float FILTERCOEF[])
我可以毫无问题地使用它,如下所示:
float *FILTEROUT;
float FIROUT[8000];
FILTEROUT = filter(PATIENTSIGNAL, FILTERCOEF);
/* */
for (k = 0; k <= 1000; k++){
FIR[k] = 10 + FILTEROUT[k];
}
如您所见,我向输出数组的每个元素添加了数字 10 以评估我能否将此数组用于 future 的计算,
但是当我想使用二维数组时,这是我的问题,我的函数正确返回二维数组;
float(*Windowing(float SIGNAL[], int WINDOWSIZE));
我已经通过这段代码以适当的方式使用了 Windowing 函数:
patientwindow = Windowing(FILTEROUT, WINDOWSIZE);
并且“patientwindow”数组中的所有数字都是正确的,但是当我想执行一些简单的操作(如求和)时:
float evaluate[WINDOWSIZE][OVERLAP/4];
for (j = 0; j <= NUMBEROFWINDOWS; j++){
for (i = 0; i < WINDOWSIZE; i++){
evaluate[i][j] = 2+ (patientwindow[i][j]);
}
}
“评估”数组的所有元素都是0
;
你能帮帮我吗?
最佳答案
使用
float** patientwindow;
float* 是指向数组的指针,而 float** 是指向矩阵的指针(为什么会这样,请参阅此答案 https://stackoverflow.com/a/17953693/4996826)。
如果你想使用 float* ,那么使用下面的代码片段:
evaluate[i][j] = 2 + (patientwindow[(i * NUMBEROFWINDOWS) + j]);
关于c - 如何对从 C 函数返回的二维数组执行计算操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30774203/