打印

自适应滤波用c语言编程中的问题

[复制链接]
1011|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mh8430|  楼主 | 2017-6-16 15:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
int FIRLMS(int *nx,float *nh,int nError,int nCoeffNumber)
{
        int i,r;
        float fWork;
       
        r=0;
        for ( i=0;i<nCoeffNumber;i++ )
        {
                fWork=nx[i]*nError*fU;
                nh[i]+=fWork;
                r+=(nx[i-i]*nh[i]);
        }
        r/=128;
        return r;
其中nx[i-i]是什么意思  为什么这么写

相关帖子

沙发
mh8430|  楼主 | 2017-6-16 15:44 | 只看该作者
主程序如下
#include"math.h"

#define PI 3.1415926
#define COEFFNUMBER 16
#define INPUTNUMBER 1024

int FIRLMS(int *nx,float *nh,int nError,int nCoeffNumber);

float h[COEFFNUMBER],fU;
int xx[INPUTNUMBER],rr[INPUTNUMBER],wc[INPUTNUMBER];

main()
{
        int i,nLastOutput;
       
        nLastOutput=0;
        fU=0.0005;
        for ( i=0;i<COEFFNUMBER;i++ )        h[i]=0;
        for ( i=0;i<INPUTNUMBER;i++ )
        {
                xx[i]=256*sin(i*2*PI/34);
                rr[i]=wc[i]=0;
        }
        for ( i=COEFFNUMBER+1;i<INPUTNUMBER;i++ )
        {
                nLastOutput=FIRLMS(xx+i,h,nLastOutput-xx[i-1],COEFFNUMBER);        // break point
                rr[i]=nLastOutput;
                wc[i]=rr[i]-xx[i];
        }
        exit(0);
}

int FIRLMS(int *nx,float *nh,int nError,int nCoeffNumber)
{
        int i,r;
        float fWork;
       
        r=0;
        for ( i=0;i<nCoeffNumber;i++ )
        {
                fWork=nx[i]*nError*fU;
                nh[i]+=fWork;
                r+=(nx[i-i]*nh[i]);
        }
        r/=128;
        return r;
}

使用特权

评论回复
板凳
dirtwillfly| | 2017-6-16 17:29 | 只看该作者
画个逻辑图看看

使用特权

评论回复
地板
qd118| | 2017-6-16 21:29 | 只看该作者
应该是(i-1)吧

使用特权

评论回复
5
airwill| | 2017-6-17 05:58 | 只看该作者
这程序的算法实现一定有问题, 看了一下关于 LMS 的算法理论. 跟你的代码对不上.
重新找一找这个代码实现吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

0

粉丝