-
大小: 16KB文件类型: .c金币: 1下载: 0 次发布日期: 2021-05-16
- 语言: C/C++
- 标签: butterworth 滤波器 c语言
资源简介
本代码是用c语言编写的实现butterworth滤波器,可以对低通,高通,带通,带阻四类滤波器进行设计。
代码片段和文件信息
/*滤波器设计说明:
截止频率设计在omegac=10附近
巴特沃斯幅频是任意阶数
巴特沃斯相频只做了2阶
切比雪夫幅频做的是4阶
切比雪夫相频做的是2阶
低通 高通 带通带阻 通过参数函数原型采用参数替换全部实现
典型参数设置:
巴特沃斯低通 高通:f1=5N=6;
贝特沃斯带通 带阻:f1=5f2=10N=6;
切比雪夫低通 高通:f1=5
切比雪夫带通 带阻:f1=5*/
#include “conio.h“
#include “dos.h“
#include “stdio.h“
#include “graphics.h“
#include “math.h“
#define UP 0x48
#define DOWN 0x50
#define ENTER 0x0D
#define ESC 0x1B
#define LU ‘\xda‘ /*制表符,LU就是leftup*/
#define RU ‘\xbf‘
#define H ‘\xc4‘
#define V ‘\xb3‘
#define LD ‘\xc0‘
#define RD ‘\xd9‘
/*以下是两种滤波器的幅频和相频曲线函数共2*2*4=16个*/
void low_pass_1(float afloat bfloat c); /*巴特沃斯幅频*/
void low_pass_12(float afloat b); /*巴特沃斯相频*/
void low_pass_2(float afloat b); /*切比雪夫幅频*/
void low_pass_22(float afloat b ); /*切比雪夫相频*/
float input(int x int y char* title);
/*输入一个浮点数,(xy)是输入框显示的位置,title是标题*/
void frame(int x1int y1int x2int y2int colorchar* title);
/*画一个带边框的窗口,并且把光标放在边框里面第一个*/
void moveCursorToEnd(); /*将光标移动到最后*/
int waveFilter = 1; /*滤波器编号,有2个滤波器可供选择*/
int mode = 1; /*模式,每个滤波器有低通 高通 带通 带阻4种模式*/
float arg1= 0; /*f1*/
float arg2 = 0; /*f2,并不是每个滤波器都要输入*/
float arg3 = 0; /*滤波器阶数*/
int graphdriver=DETECT;
int graphmodexy;
int selWaveFilter(); /*1.选择滤波器*/
int selMode(); /*2.选择模式*/
void inputArgs(); /*3.输入参数*/
int checkArgs(); /*4.检查输入的参数是否合法,如果合法,返回1*/
void drawGraph(); /*5.画图*/
void main()
{ registerbgidriver(EGAVGA_driver);
while(1)
{
frame(118025GREEN“Simulated Wave Filter“);
waveFilter = selWaveFilter();
if(waveFilter == 3) /*用户选择了Exit*/
return;
mode = selMode();
if(mode == 5) /*用户选择模式时按下了ESC*/
continue;
do
{
inputArgs();
}while(checkArgs() != 1);
drawGraph();
}
}
int selWaveFilter()
{
char item[3][32]={“Butterworth““ Chebyshev““ Exit“};
int chiselected=0;
frame (302446GREEN““);
while(1)
{
for(i=0;i<3;i++)
{
window(31i+343i+3);
if(selected==i)
{
textbackground(LIGHTGRAY);
textcolor(YELLOW);
}
else
{
textbackground(GREEN);
textcolor(WHITE);
}
clrscr();
gotoxy(21);
cprintf(“%s“item[i]);
}
moveCursorToEnd();
if((ch=getch())==0)
ch=getch();
if(ch==UP)
{
selected--;
if(selected==-1)
selected=2;
}
if(ch==DOWN)
{
selected++;
if(selected==3)
selected=0;
}
if(ch==ENTER)
return selected + 1;
}
}
int selMode()
- 上一篇:C语言编写成的吃豆子游戏
- 下一篇:场景渲染 蓝天 白云模拟程序二
相关资源
- C语言编写成的吃豆子游戏
- 赫夫曼树的构建及赫夫曼编码C语言源
- 六种排序算法C语言实现源代码
- playfair 算法及其C语言模拟实现
- 中文C语言程序设计 教程
- C语言100个经典算法题目+源码
- 哈夫曼树的建立(Huffman Tree C语言实现
- 整数小数四则运算计算器(C语言版用
- 51单片机c语言4x4矩阵键盘实验详细操
- 唯一可译码的辨别 C语言实现
- 模拟退火算法含有C语言源代码
- 五点三次平滑滤波C语言程序
- 使用c语言实现基于图的图像分割代码
- C语言套接字编程TCP连接
- C语言学生信息管理系统附代码73988
- ubuntu交叉编译mysql的C语言程序到ARM开
- 51单片机-舵机控制C语言程序
- C语言实现cordic sinx的算法
- 好玩的C语言代码
- 经典编程900题c语言
- C语言版课室管理系统
- 《新概念51单片机C语言教程--入门提高
- 矩阵求逆算法c语言编程
- 左手法则c语言程序
- BCH3121编码译码解码程序源代码——
- 宇视科技C语言面试题
- 三次样条插值算法c语言
- 模糊pid算法c语言
- 规定3个空瓶子换一瓶饮料,现在又
- 八数码宽度优先搜索加注释.txt
评论
共有 条评论