帮助我为什么我的数字过滤器不工作

H

hbaocr

Guest
这里的低通与NUM和用MATLAB(sptool)设计登革过滤代码fsample =宽频1;足球俱乐部= 40Hz;巴特沃斯IIR滤波器

#定义皮阿科斯(-1)
双分子[] =(0.00018321602337,0.000732864093479,0.001099296140218,0.000732864093479,0.00018321602337);

双分母[] =(1,-3.344067837711875,4.238863950884069,-2.409342856586321,0.517478199788041);

代码:

无效CVedothiDlg::Low_pass_filter(双* NUM个,双*登革,双*样本,双data_update,双*输出,无符号整型length_output_data)

(无符号的字符一;示例[4] =样本[3];

样本[3] =样品[2];

样品[2] =样本[1];

样本[1] =样品[0];

样品[0] = data_update;

/ /缓冲输出

为(一= length_output_data,我“0; - )



输出[我] =输出[的i - 1];

)/ /输出数据更新

输出[0] = NUM个[0] *样品[0] NUM个[1] *样本[1] NUM个[2] *样品[2] NUM个[3] *样本[3] NUM个[4] *示例[4]旦[1] *输出[1]旦[2] *输出[2]旦[3] *输出[3]旦[4] *输出[4];)

 
有琐碎的C语言编程的问题,我想。我一般建议跟踪程序的调试执行检查可能的行动。
and 500*i/1000
may be executed first.

有一点是
, 在一个表达式为2 *皮* 500 * i/1000编译器是免费的界定
, 以执行其需求,从而一个整数表达式 i
和 500 * 500 * i/1000
可能会首先执行。一个可能会令溢出,如果整数是16(你没有告诉有关enviroement),反正其他截断。写作(500.0f * i)或(浮动)我可以保证正确的执行。

该oher的一点是,在一个函数的局部变量初始化一般在C,所以您的过滤器存储单元包含任意valuesa吨的开始。

最后,我不知道如何组成部分工程的范围,如果它使用的Y输出向量正确的。

 
感谢,有限体积
我使用的VC ver6.0,而且范围,我敢肯定
, 这是完全TRUE.Because在我的项目中,我使用一个Active X控件
, 可以使范围。

 
有明显的缓冲区溢出:
您可以使用示例[4],但对数组的大小,x是四个所谓允许指数为0,1,2,3,但没有4。
我同时认为Scope.Channels [0]。Data.SetYData(是,1000); / /绘制信号输出
应该在循环加快执行。

 
有限体积,C表达式2 *皮* 500 * i/1000等价于(((2 *π)* 500)* 1)/ 1000。
如果'皮'是一种双重的话,一切都被提升一倍,所以没有划分两个整数的风险。

 
凯尼汉/里奇说,该编译器是免费的*或 运营商在一个表达式重新排序。此外,*和/享有同等的优先权。我没有看到一条规则
, 禁止评价i/1000第一。这可能是,更多的是VC6有自定义的限制
, 提供更清晰
, 程序员。

 
幼稚园及R2的第A.7.6说:“*,/和%组左到右乘法经营者。”

您可能想这个从K&R2的第2.12节的发言:
的“C,最喜欢的语言,没有订明在其中经营的运算数都被命令。”
这是一个不同的问题。

 
非常感谢
我真的很感激你的答案的任何一种。

 

Welcome to EDABoard.com

Sponsor

Back
Top