首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

三角形滤波器设置的代码看不懂,该怎么处理

2012-05-08 
三角形滤波器设置的代码看不懂下面三角形滤波器设置的代码看不懂,请懂的朋友解释下。C/C++ code/*设置滤波

三角形滤波器设置的代码看不懂
下面三角形滤波器设置的代码看不懂,请懂的朋友解释下。

C/C++ code
/*设置滤波器参数输入参数:无输出参数:*FiltCoe1---三角形滤波器左边的系数          *FiltCoe2---三角形滤波器右边的系数          *Num     ---决定每个点属于哪一个滤波器*/void m_InitFilt(float *FiltCoe1, float *FiltCoe2, int *Num){    int i,j;    float Freq;    int FiltFreq[m_FiltNum+1] = {0,100,200,300,400,500,600,700,800,900,1000,        1149,1320,1516,1741,2000,2297,2639,3031,3482,4000,        4595,5278,6063,6964,8001};//滤波器的中心频率    int BW[m_FiltNum+1]={100,100,100,100,100,100,100,100,100,100,124,        160,184,211,242,278,320,367,422,484,556,        639,734,843,969,1112};//滤波器的带宽    for(i = 0 ; i<= m_FFTLen/2 ; i++ )    {       Num[i]=0;//初始化为0    }    for(i = 0 ; i <= m_FFTLen/2 ; i++)//m_FFTLen 256    {        Freq = m_FS * 1000.0F * (float)(i) / (float)(m_FFTLen);        for(j = 0 ; j <m_FiltNum ; j++)//m_FiltNum = 25        {            if(Freq >= (float)FiltFreq[j] && Freq <= (float)FiltFreq[j+1])            {                Num[i] = j;                if(j == 0)                {                          FiltCoe1[i] = 0.0F;                }                else                {                        FiltCoe1[i] = ((float)(FiltFreq[j]+BW[j])-Freq) / (float)(BW[j]);                }                FiltCoe2[i] = (Freq-(float)(FiltFreq[j+1]-BW[j+1])) / (float)(BW[j+1]);                FiltCoe1[i] = FiltCoe1[i] * FiltCoe1[i];//平方                FiltCoe2[i] = FiltCoe2[i] * FiltCoe2[i];                break;            }        }    }}


[解决办法]
先不说这个程序
滤波器是干嘛的你知道吧
原理了解了再看程序也就明白了
就是对三角滤波器原理的实现
简单说就是卷积
[解决办法]
两位都是做信号处理的吗?
[解决办法]
不好意思
武断了
仔细看了一下代码确实云里雾里
这个函数有没有其他的上下文环境和应用场合的信息
[解决办法]
有没有谁能用MATLAB作一个三角形的滤波器?

热点排行