FIR滤波器设计C语言程序

  • 格式:pdf
  • 大小:65.26 KB
  • 文档页数:4

FIR滤波器设计C语言程序

FIR滤波器设计C语言程序

FIR滤波器设计C语言程序

1. 引言

2. FIR滤波器原理

FIR滤波器的输入输出关系可以表示为以下方程:

y[n] = h[0]x[n] + h[1]x[n-1] + + h[M]x[n-M]

其中,y[n]为输出信号,x[n]为输入信号,h为FIR滤波器的系数向量,M为滤波器的阶数。

3. 窗函数法设计FIR滤波器

窗函数法是一种简单有效的FIR滤波器设计方法,其思想是通过加窗和傅里叶变换来确定滤波器系数。

步骤如下:

1. 确定滤波器的阶数M,一般通过信号频率响应要求来确定。

2. 选择一个窗函数(如矩形窗、汉宁窗等)。

3. 根据窗函数的性质和滤波器的阶数,计算出滤波器的理想频率响应h_ideal。FIR滤波器设计C语言程序4. 使用傅里叶变换将理想频率响应转换为时间域的滤波器系数h。

5. 对h进行归一化处理,得到最终的滤波器系数。

4. C语言程序实现

下面给出一个简单的C语言程序,实现了FIR滤波器的设计过程。

c

include

include

define N 1000 // 输入信号长度

define M 50 // 滤波器阶数

void fir_filter(float x, float h, float y) {

int i, j;

for (i = 0; i < N; i++) {

y[i] = 0;

for (j = 0; j < M; j++) {

if (i >= j) {FIR滤波器设计C语言程序 y[i] += h[j] x[i j];

}

}

}

}

int mn() {

float x[N]; // 输入信号

float h[M]; // 滤波器系数

float y[N]; // 输出信号

int i;

// 输入信号和滤波器系数

for (i = 0; i < N; i++) {

x[i] = sin(2 M_PI 1000 i / N) + sin(2 M_PI 2000 i / N); // 两个正弦信号叠加

}

for (i = 0; i < M; i++) {

h[i] = 1.0 / M; // 简单的均值滤波器FIR滤波器设计C语言程序 }

// 调用FIR滤波函数

fir_filter(x, h, y);

// 输出滤波后的信号

for (i = 0; i < N; i++) {

printf(\