您好!
我尝试在 C/C++中复制 MATLAB 函数滤波器、但我遇到了一些问题。 此 MATLAB 函数是一组数学运算(主要是乘法)、如下所示。
函数[Y、z]=乳化 FILTER (b、a、X、z) b = b ./ a (1); A = A ./ A (1); N =长度(A); Z (n)= 0; y =零(size (X)); 对于 m = 1:length (Y) XM = X (m); y (m)= b (1)* xM + z (1); YM = Y (m);% 对于 I = 2:n z (i - 1)= b (i)* xM + z (i)- a (i)* ym; 结束 结束 z = z (1:n - 1); 结束
我的 C/C++函数(计算滤波器的所有参数)为以下代码:
/*libraries*/ #include "msp430.h" #include / 输入 uint32_t vector[450]={0、1、2、3、4、…、n};//示例输入//结果浮点 Y[450]={0};//过滤器参数浮点 A[5]={1.0000、-3.3366、4.2260、-31、258、056、372};//终端0 = 0.066_0364*、0.066*、0.066* 、0.066_064*、0.066_0=0; AUX2 = 0; /*函数*/ //( aux = 0;aux<4;aux++){的延迟计算 z_aux[aux]= zi[aux]*(float) vector[0]; } //Filter 实现 (aux = 0;aux < 450;aux++){ xM =(浮点)向量[aux]; y[aux]=(b[0]* xM)+ z_aux[0]; YM = Y[辅助]; 对于(AUX2 = 1;AUX2 < 5;AUX2++){ terminal1 = b[AUX2]* xM; terminal2 = A[AUX2]* ym; Z_aux[AUX2 - 1]= terminal1 + z_aux[AUX2]- terminal2; } }
数学运算的结果在 C/C++和 Matlab 中是不同的、我不理解为什么、因为数学是相同的。 是否有任何关于如何解决此问题的想法?
Tkanks