实际可运行的FIR滤波器系数设计的C语言程序

#include"math.h"

#include"stdio.h"

/*n:滤波器的阶数,n是奇数时可用来设计各种滤波器

band:滤波器类型1、2、3、4分别对应低通,高通,带通,带阻

fln:通带下边界频率

fhn:通带上边界频率

wn:窗函数的类型1-7分别对应

h:长度为n+1,存放滤波器的系数

fs:采样频率*/

void firwin(n,band,fln,fhn,wn,h)

int n,band,wn;

double fln,fhn,h[];

{

int i,n2,mid;

double s,pi,wc1,wc2,beta,delay,fs;

double window();//窗函数的计算

beta=0.0;

if(wn==7)//只有凯塞窗需要输入系数beta

{printf("input beta parameter of Kaiser window(2

scanf("%1f",&beta);

}

pi=4.0*atan(1.0);//pi=PI;

if((n%2)==0)/*如果阶数n是偶数*/

{n2=n/2+1;/**/

mid=1;//

}

else

{n2=n/2;//n是奇数,则窗口长度为偶数

mid=0;//

}

delay=n/2.0;

wc1=2.0*pi*fln;//

if(band>=3) /*先判断用户输入的数据,如果band参数大于3*/

{wc2=2.0*pi*fhn;}

switch(band)

{

case 1:

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

{s=i-delay;//

h[i]=(sin(wc1*s/fs)/(pi*s))*window(wn,n+1,i,beta);//低通,窗口长度=阶数+1,故为n+1

h[n-i]=h[i];

}

if(mid==1)h[n/2]=wc1/pi;//n为偶数时,修正中间值系数

break;

}

case 2:

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

{s=i-delay;

h[i]=(sin(pi*s)-sin(wc1*s/fs))/(pi*s);//高通-//对

h[i]=h[i]*window(wn,n+1,i,beta);

h[n-i]=h[i];

}

if(mid==1)h[n/2]=1.0-wc1/pi;//对

break;

}

case 3:

{for(i=0;i

{s=i-delay;

h[i]=(sin(wc2*s/fs)-sin(wc1*s/fs))/(pi*s);//带通-//对

h[i]=h[i]*window(wn,n+1,i,beta);

h[n-i]=h[i];

}

if(mid==1)h[n/2]=(wc2-wc1)/pi;//对

break;

}

case 4:

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

{s=i-delay;

h[i]=(sin(wc1*s/fs)+sin(pi*s)-sin(wc2*s/fs))/(pi*s);//带阻-//对

h[i]=h[i]*window(wn,n+1,i,beta);

h[n-i]=h[i];

}

if(mid==1)h[n/2]=(wc1+pi-wc2)/pi;

break;

}

}

}

/*返回窗函数的表达式

n:窗口长度

type:选择窗函数的类型

beta:生成凯塞窗的系数*/

static double window(type,n,i,beta)

int i,n,type;

double beta;

{

int k;

double pi,w;

double kaiser();

pi=4.0*atan(1.0);//pi=PI;

w=1.0;

switch(type)

{

case 1:

{w=1.0;//矩形窗

break;

}

case 2:

{k=(n-2)/10;

if(i<=k)

w=0.5*(1.0-cos(i*pi/(k+1)));//图基窗

break;

}

case 3:

{w=1.0-fabs(1.0-2*i/(n-1.0));//三角窗

break;

}

case 4:

{w=0.5*(1.0-cos(2*i*pi/(n-1)));//汉宁窗

break;

}

case 5:

{w=0.54-0.46*cos(2*i*pi/(n-1));//海明窗

break;

}

case 6:

{w=0.42-0.5*cos(2*i*pi/(n-1))+0.08*cos(4*i*pi/(n-1));//布莱克曼窗

break;

}

case 7:

{w=kaiser(i,n,beta);//凯塞窗

break;

}

}

return(w);

}

static double kaiser(i,n,beta)//因凯塞窗的表达式复杂,调用贝塞尔窗表达式

int i,n;

double beta;

{

double a,w,a2,b1,b2,beta1;

double bessel0();

b1=bessel0(beta);

a

fir滤波器算法c语言程序,FIR滤波器设计C语言程序相关推荐

  1. PHP 程序员如何设计一个爬虫程序

     A8U几年前接过一个项目,类似一个 PHP 爬虫程序,做一个微博舆情分析系统:要爬取新浪微博,用特定关键词搜索中的页面的微博内容. 那是我第一次接触网络爬虫,根本没有思路,也不了解什么Scrap ...

  2. c语言中函数教学设计,C语言程序设计 函数 C教学设计7单元V1.0.doc

    教学设计 河北工业职业技术学院 "C语言程序设计"教学设计 系 别: 计算机技术系 设计教师: 宋铁桥 设计时间: 2017年4月25日 教学内容 第七单元 函数 授课教师 宋铁桥 ...

  3. c语言程序设计 在线课程设计,c语言程序设计 本科课程设计

    <c语言程序设计 本科课程设计>由会员分享,可在线阅读,更多相关<c语言程序设计 本科课程设计(11页珍藏版)>请在人人文库网上搜索. 1.河北农业大学本 科 课 程 设 计课 ...

  4. c语言一维数组教学设计,C语言教学中一维数组教学设计.doc

    C语言教学中一维数组教学设计 C语言教学中一维数组教学设计 [摘 要] 数组是C语言中非常重要的概念,通常学生在初次接触到这一概念时感到很抽象.本文通过生活中常常接触到的超市储物柜与数组进行类比,将数 ...

  5. c语言游戏菜单栏界面设计,C语言课程设计-精美游戏目录选择界面.doc

    计算机技术基础课程设计 C语言 设计报告 题目:精美游戏目录选择界面演示 学院:化学工程学院 专业:制药工程专业 班级:050607 姓名:徐成 指导教师:顾煜新 设计日期:2006年12月14日→2 ...

  6. c语言指针课堂教学设计,C语言程序设计 指针 C教学设计8单元V1.0.doc

    教学设计 河北工业职业技术学院 "C语言程序设计"教学设计 系 别: 计算机技术系 设计教师: 宋铁桥 设计时间: 2017年4月25日 教学内容 第八单元 指针 授课教师 宋铁桥 ...

  7. c语言期末作业自己设计个小程序,帮看一个小程序吧,c语言期末考…求求各位大神了...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #define max 2014 typedef struct stack { int data[max]; int ...

  8. javascript是一门多线程的语言_Javascript:10天设计一门语言

    演进和使用的JavaScript是早在1995年开发的一种语言,真的是刚刚起步. 网景公司在1995年四月聘请Brendan Eich ,他被告知,他有10天时间创造并制作了一种将在Netscape的 ...

  9. c语言if语句教学设计,c语言if语句教学设计

    C 语言 if 语句的应用教学设计 授课时间 45 分钟 课题(章节) 第 4 章第 3 节<if 语句> 教学目的与要求: 1.让学生了解 if 语句的二种结构语句格式. 2.通过本课让 ...

  10. c语言if语句教学设计,c语言if语句教学设计.pdf

    学习必备 欢迎下载 C 语言if 语句的应用教学设计 授课时间 45 分钟 课题(章节) 第4 章第3 节<if 语句> 教学目的与要求: 1.让学生了解if 语句的二种结构语句格式. 2 ...

最新文章

  1. android url webview,android - webview获取到当前页面的url
  2. 编程入门python语言是多大孩子学的-不学点编程,将来怎么给孩子辅导作业―Python新手入门教程...
  3. 计算机组成原理唐朔飞课后答案第六章,计算机组成原理第六章部分课后题答案(唐朔飞版)...
  4. linux查看分区树形状态,查看Linux磁盘的分区状态(lsblk、blkid、parted)
  5. 编写简单的连接MongoDB数据库C++程序 解决编译C++程序时链接MongoDB动态库失败的问题...
  6. 程序员如何搞定前端高频面试难题?附答案汇总 | 技术头条
  7. MySQL数据库规范及解读
  8. HTML中元素的position属性详解
  9. 植物病害分类的深度可解释体系结构(github源码)
  10. python 读取文件到字典读取顺序_Python用list或dict字段模式读取文件的方法
  11. 关于PCBLayout的一些具体细节的认识(能力有限,请大家多多指点)
  12. [论文写作] Wrong vs Mistake vs Error vs Incorrect vs Erroneous
  13. EZEMC测试软件_EMI 和 EMC 仿真、测量和预兼容性测试
  14. 数据结构(Java)-排序算法-插入排序
  15. 小锤子要出来?老罗傲娇属性不再
  16. 【Pyecharts50例】自定义饼图标签/显示百分比
  17. 贴片电解电容正负极区分
  18. STM32的HAL库及其使用
  19. floyd算法求解地铁路线问题
  20. 3.JavaScript核心BOM操作学习(界面交互功能)——JavaScript获取自定义的方法,开始进行节点操作

热门文章

  1. Serena Dimensions 介绍
  2. 对PostgreSQL中后台进程内存挂载的初步学习
  3. UCenter 表结构
  4. 在ASP.NET中自动给URL地址加上超链接(好东东)
  5. 记一次 OOM 的原因和处理 出现大量 close_wait,项目无法访问 activeMq和 poi 出现的 OOM
  6. Android添加Header请求参数实例,java响应header请求实现demo
  7. 织梦的if(!defined('DEDEINC')) exit("Request Error!");解析
  8. 凯斯西储大学计算机工程排名,[转载]凯斯西储大学排名及世界排名【研究生】...
  9. SQLServer windows身份验证连接字符串
  10. oracle建表代码,Oracle 建表(一对多)代码及相关约束示例