fir滤波 c语言,分享MSP430单片机实现的FIR滤波器C语言程序
分享MSP430單片機實現的FIR濾波器C語言程序
[復制鏈接]
#include
#define FRAME?? ??? ?180
short int h[19] = {
399,-296,-945,-1555,
-1503,-285,2112,5061,
7503,8450,7503,5061,
2112,-285,-1503,-1555,
-945,-296,399
};
static short int nBuff[FRAME + 20];
void LowpassFilter(short int nIn[],short int nOut[],int nLen,short int h[]);
void main()
{
FILE *m_pInput;
FILE *m_pOutput;
short int input[FRAME];
short int output[FRAME];
int count;
// 打開輸入文件
if((m_pInput = fopen("input.wav", "rb")) == NULL)
{
return;
}
//打開輸出文件
if((m_pOutput = fopen("output.wav", "wb")) == NULL)
{
return;
}
count = 0;
while( fread(&input[0], sizeof(short int), FRAME, m_pInput) == FRAME)
{
printf("Frame =%d\r", count++);
//濾波處理
LowpassFilter(input,output,19,h);
//將濾波后的數據寫到文件里
fwrite(output, sizeof(short int), FRAME, m_pOutput);
}
fclose(m_pOutput);
fclose(m_pInput);
}
void LowpassFilter(short int nIn[],short int nOut[],int nLen,short int h[])
{
short int i,j;
int sum;
//緩沖區的內容更新
for(i = 0;i < FRAME;i++)
{
nBuff[i + nLen -1] = nIn[i];
}
//FIR濾波處理
for(i = 0;i < FRAME;i++)
{
sum = 0;
for(j = 0;j < nLen;j++)
{
sum += h[j] * nBuff[i - j + nLen -1];
}
nOut[i] = sum >> 15;
}
//更新緩沖區的內容
for(i = 0;i < nLen - 1;i++)
{
nBuff[nLen - i - 2] = nIn[FRAME - i - 1];
}
}
總結
以上是生活随笔為你收集整理的fir滤波 c语言,分享MSP430单片机实现的FIR滤波器C语言程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SEER区块浏览器开发指南
- 下一篇: 13.2.1 访问世界银行的数据