嵌入式开发者社区

标题: 算法讨论 [打印本页]

作者: qiaoge89757    时间: 2018-4-21 22:20
标题: 算法讨论
在AD8568采样应用中,为了计算输入正弦信号的频率和幅值,写了下面这个函数。但是结果是在输入正弦信号频率低的时候(<360HZ)结果显示正确,但是频率加高后,显示的频率就上不去了,而且还会下降,不知道为什么?从算法上感觉没有问题,算法思路是找找到一个大于0的值,然后再找到小于0的值,最后再找到一个大于0的值,则频率值加1;不知道和DSP的程序运行方式有没有关系。

Para GetParameter(float Input[]){
   Para p;
   float max=1;
   int i,flag=1,num=0;
   double yuzhi=0.1;
   for(i=1;i<800;i++)
   {
       if (Input>max)
           max=Input;
       if(Input>yuzhi&&flag==1)  //Input[i-1]<阈值且Input>阈值,则num++
       {
           num=num+1;               // num代表波峰数目,即条纹数目
           flag=0;
       }
       if(Input<yuzhi)
        flag=1;
    }
   p.freq=num;
   p.amp=max;
   return p;

而且采样率不同,显示的波形和频率也不同.下图分别是采样率为1024和10240时的结果输入正弦波频率为100hz.采样点数为1024.
而且为了调试程序我在main函数的第一行就加了printf("sdfsd");但是debug的时候控制台里并没有打印信息啊
[attach]3157[/attach]
[attach]3158[/attach]

作者: 广州创龙廖工    时间: 2018-4-27 21:53
您好,请问只是这句printf指令没有生效吗?
作者: qiaoge89757    时间: 2018-5-8 11:29
当输入正弦波的频率提高后,DSP显示的频率值没有提高到一定程度后显示频率还会下降




欢迎光临 嵌入式开发者社区 (https://51ele.net/) Powered by Discuz! X3.4