直接型FIR滤波器的C语言实现
2016-07-12 15:07
405 查看
直接型FIR滤波器的C语言实现
设输入数据x
,输出数据y
,滤波器系数h
1.直接法(由y(m)=h(0)*x(m)+h(1)*x(m-1)+...+h(N-1)*x(m-n-1));
[cpp]
view plain
copy
print?
void fir(short x[], short h[], short y[])
{
int i,j;
long long sum;
for (j = 0; j < N; j++)
{
sum = 0;
for (i = 0; i < n; i++)
sum += x[j-i] * h[i];
y[j] = sum >> 15;
}
}
2.逆推法:
[cpp]
view plain
copy
print?
void fir(short x[], short h[], short y[])
{
int i,j;
long sum;
for (j = 0; j < n; j++)
{
for (i = 0; i < N; i++)
{
sum = 0;
sum = h[j] * x[i]
y[i] += sum >> 15;
}
}
}
3.倒序法:(输入输出可以是同一量)
[cpp]
view plain
copy
print?
void fir(short x[], short h[], short y[])
{
int i,j;
long long sum;
for (j = N; j > 0; j--)
{
sum = 0;
for (i = n; i > 0; i--)
sum += x[j-i] * h[i];
y[j] = sum >> 15;
}
}
设输入数据x
,输出数据y
,滤波器系数h
1.直接法(由y(m)=h(0)*x(m)+h(1)*x(m-1)+...+h(N-1)*x(m-n-1));
[cpp]
view plain
copy
print?
void fir(short x[], short h[], short y[])
{
int i,j;
long long sum;
for (j = 0; j < N; j++)
{
sum = 0;
for (i = 0; i < n; i++)
sum += x[j-i] * h[i];
y[j] = sum >> 15;
}
}
void fir(short x[], short h[], short y[]) { int i,j; long long sum; for (j = 0; j < N; j++) { sum = 0; for (i = 0; i < n; i++) sum += x[j-i] * h[i]; y[j] = sum >> 15; } }乘法器使用次数:N*n
2.逆推法:
[cpp]
view plain
copy
print?
void fir(short x[], short h[], short y[])
{
int i,j;
long sum;
for (j = 0; j < n; j++)
{
for (i = 0; i < N; i++)
{
sum = 0;
sum = h[j] * x[i]
y[i] += sum >> 15;
}
}
}
void fir(short x[], short h[], short y[]) { int i,j; long sum; for (j = 0; j < n; j++) { for (i = 0; i < N; i++) { sum = 0; sum = h[j] * x[i] y[i] += sum >> 15; } } }乘法器使用次数:N*n
3.倒序法:(输入输出可以是同一量)
[cpp]
view plain
copy
print?
void fir(short x[], short h[], short y[])
{
int i,j;
long long sum;
for (j = N; j > 0; j--)
{
sum = 0;
for (i = n; i > 0; i--)
sum += x[j-i] * h[i];
y[j] = sum >> 15;
}
}
void fir(short x[], short h[], short y[]) { int i,j; long long sum; for (j = N; j > 0; j--) { sum = 0; for (i = n; i > 0; i--) sum += x[j-i] * h[i]; y[j] = sum > 4000 > 15; } }
相关文章推荐
- 借助编译器阅读耗子叔6个变态的C语言Hello World程序
- 设计模式之模板方法模式(C++)
- C语言学习笔记字符读入读出
- 趣味100道C语言程序题num three
- Counting Sort
- C++ 邦德市
- C语言入门(十九)指针函数和函数指针
- BZOJ - 1977 [BeiJing2010组队]次小生成树 Tree Kruskal演算法+最近公共祖先
- C++虚函数,纯虚函数,抽象类
- C语言入门(十八)数组和指针
- C/C++中如何在main()函数之前执行一条语句?
- C语言入门(十七)指针概念
- leetcode_c++:哈希:Intersection of Two Arrays II(350)
- leetcode_c++:哈希:intersection of Two Arrays(349)
- C++中auto_ptr智能指针的用法详解
- C语言文件操作详解
- leetcode_c++:哈希:Top K Frequent Elements(347)
- leetcode_c++:哈希:Palindrome Pairs(336)
- C语言入门(十六)预处理过程
- leetcode_c++:哈希:Bulls and Cows(299)