-1
我想爲FIR濾波器做一個C函數,它有兩個輸入數組和一個輸出數組。 兩個輸入數組是常數,我想將它們用於濾波器輸出的計算,並計算之後將其刪除,只是存儲的功能,輸出數組,這是我的代碼,但它不工作如何在c函數中使用malloc?
#include <stdlib.h>
float * filter(float *PATIENTSIGNAL,float *FILTERCOEF, int lengthofpatient , int lengthoffilter){
static float FIROUT[8000];
int i,j;
float temp=0;
float* SIGNAL;
float* COEF;
SIGNAL = malloc(lengthofpatient *sizeof(float));
COEF = malloc(lengthoffilter*sizeof(float));
}
for (j = 0; j <= lengthofpatient; j++){
temp = SIGNAL[j] * COEF[0];
for (i = 1; i <= lengthoffilter; i++){
if ((j - i) >= 0){
temp += SIGNAL[j - i] * COEF[i];
}
FIROUT[j] = temp;
}
}
free(SIGNAL);
free(COEF);
free(PATIENTSIGNAL);
return FIROUT;
}
當您使用臨時變量時,SIGNAL和COEF被分配但未初始化。 –
'for(j = 0; j <= lengthofpatient; j ++)'這將循環一次以上。 'i'循環也是一樣。 – pmg
不應該在'COEF = malloc(lengthoffilter * sizeof(float));'後面去掉'}';'因爲它似乎終止了你的函數聲明? – Cyclonecode