回楼上,我没有学习过matlab,我计算机也安装了这个软件,不知道怎么去使用,学习哪些书可以快速入门,可以推荐一本吗?谢谢!
网上找了一个例子:
#define PI 3.1415926
#define NUM 200
/**********************************************/
const int length=NUM;
#define COUNT 162
const int h[COUNT]={
0, 0, -1, -1, -1, -1, -2, -2, -3,
-3, -3, -3, -3, -3, -2, -2, -1, 1,
3, 5, 7, 10, 13, 17, 21, 24, 28,
31, 34, 36, 38, 38, 37, 35, 31, 26,
19, 9, -2, -15, -30, -46, -64, -83, -102,
-121, -139, -157, -172, -184, -193, -198, -198, -192,
-180, -162, -135, -101, -59, -9, 49, 115, 188,
268, 353, 444, 539, 637, 736, 835, 933, 1028,
1118, 1203, 1281, 1350, 1410, 1459, 1496, 1522, 1534,
1534, 1522, 1496, 1459, 1410, 1350, 1281, 1203, 1118,
1028, 933, 835, 736, 637, 539, 444, 353, 268,
188, 115, 49, -9, -59, -101, -135, -162, -180,
-192, -198, -198, -193, -184, -172, -157, -139, -121,
-102, -83, -64, -46, -30, -15, -2, 9, 19,
26, 31, 35, 37, 38, 38, 36, 34, 31,
28, 24, 21, 17, 13, 10, 7, 5, 3,
1, -1, -2, -2, -3, -3, -3, -3, -3,
-3, -2, -2, -1, -1, -1, -1, 0, 0
};
static int x1[NUM+COUNT];
int indata[NUM];
void filter(uint xin[],uint xout[],int n,const int h[])
{
int i,j;
long sum;
for(i=0;i<length;i++)
x1[n+i-1]=xin;
for(i=0;i<length;i++)
{
sum=0;
for(j=0;j<n;j++)
sum+=(long)h[j]*x1[i-j+n-1];
xout=sum>>15;
}
for(i=0;i<(n-1);i++)
x1[n-i-2]=xin[length-i-1];
}
很想搞清楚几个问题:
1,为什么要进行FIR滤波,FIR滤波算法一般用在哪些地方,这种算法好象在普通单片机(51,AVR)上运行可能困难?
2,计算系数就是按6楼的代码吧。
3,这个阶数一般怎么选取,我看有的选的小,有的大。
6楼可否留个联系方式,方便跟你学习一下matlab,谢谢! |