首先在MATLAB上通过设计一个巴特沃斯滤波器来实现一个高通滤波器。

%设计一个巴特沃斯高通滤波器
%滤除一个300HZ的正弦信号
clear;
fn = 10000;%采样频率
fp = 900;%通带截止频率
fs = 600;%阻带截止频率
Rp = 2;%通带最大衰减
Rs = 20;%阻带最小衰减
figure(1);
Wp = fp/(fn/2);
Ws = fs/(fn/2);
[n,Wn] = buttord(Wp,Ws,Rp,Rs);
[b,a] = butter(n,Wn,'high');[H,F] = freqz(b,a,900,10000);%数字滤波器的频率响应
subplot(211);
plot(F,20*log10(abs(H)))
axis([0 4000 -30 3]);subplot(212);
pha = angle(H)*180/pi;
plot(F,pha);
% axis([0 8000 -200 200]);
grid on;
figure(2);
f1 = 2000;
f2 = 300;
t = 0:1/fn:1;
x = sin(2*pi*f1*t)+cos(2*pi*f2*t)/6;
y = filter(b,a,x);
subplot(211);
Y = fft(x);
n=0:length(x)-1;
plot(n,Y);
subplot(212);
Y1 = fft(y);
n=0:length(y)-1;
plot(n,Y1);
grid on;
figure(4);
plot(t,x);
subplot(111);
figure(5);
plot(t,y);
subplot(111);

结果如下:
滤波器的频率特性:

在600HZ时-20分贝
输入波形:

可以从幅度看出输入波形为sin+cos/6;
输出波形:

输入和输出的频谱:

观察滤波器【b,a】[b,a] = butter(n,Wn,‘high’);
a = 1 -4.67625140576819 9.64877723309598 -11.3207795685212 8.12672213051155 -3.55976931154069 0.879191790281082 -0.0942959539620253
b = 0.307076464013131 -2.14953524809191 6.44860574427574 -10.7476762404596 10.7476762404596 -6.44860574427574 2.14953524809191 -0.307076464013131
则系统函数 y(n)= 4.67625140576819y(n-1)-9.64877723309598y(n-2)…+0.0942959539620253y(n-7)+0.307076464013131x(n)-2.14953524809191x(n-1)…-0.307076464013131x(n-7)
所以通过这个编写CCS的代码:

#include"math.h"#define IIRNUMBER 8
#define SIGNAL1F 1000
#define SIGNAL2F 4500
#define SAMPLEF  10000
#define PI 3.1415926float InputWave();
float IIR();float fBn[IIRNUMBER]={0,4.67625140576819,-9.64877723309598,11.3207795685212,-8.12672213051155,3.55976931154069,-0.879191790281082,0.0942959539620253};
float fAn[IIRNUMBER]={0.307076464013131,-2.14953524809191,6.44860574427574,-10.7476762404596,10.7476762404596,-6.44860574427574,2.14953524809191,-0.307076464013131};
float fXn[IIRNUMBER]={ 0.0 };
float fYn[IIRNUMBER]={ 0.0 };
float fInput,fOutput;
float fSignal1,fSignal2;
float fStepSignal1,fStepSignal2;
float f2PI;
int i;
float fIn[256],fOut[256];
int nIn,nOut;main()
{nIn=0; nOut=0;fInput=fOutput=0;f2PI=2*PI;fSignal1=0.0;fSignal2=PI*0.1;//初始相位fStepSignal1=2*PI*300;fStepSignal2=2*PI*2000;while ( 1 ){fInput=InputWave();fIn[nIn]=fInput;nIn++; nIn%=256;fOutput=IIR();fYn[0]=fOutput;fOut[nOut]=fOutput;nOut++;             // break pointif ( nOut>=256 ){nOut=0;     }}
}
/*生成采样率10000HZ,频率300HZ的正弦信号+1/6频率2000HZ的余弦信号*/
float InputWave()
{for ( i=IIRNUMBER-1;i>0;i-- ){fXn[i]=fXn[i-1];fYn[i]=fYn[i-1];}fXn[0]=sin((double)fSignal1)+cos((double)fSignal2)/6.0;fSignal1+=fStepSignal1/SAMPLEF;if ( fSignal1>=f2PI )   fSignal1-=f2PI;fSignal2+=fStepSignal2/SAMPLEF;if ( fSignal2>=f2PI )  fSignal2-=f2PI;return(fXn[0]);
}
//求y(n)=4.676251y(n-1)+....++0.0942959y(n-7)+0.3070764x(n)+....-0.307076x(n-7)
float IIR()
{float fSum;fSum=0.0;for ( i=0;i<IIRNUMBER;i++ ){fSum+=(fXn[i]*fAn[i]);fSum+=(fYn[i]*fBn[i]);}return(fSum);
}

debug结果如下:
输入信号:

滤波后输出信号:

输入信号频谱:

输出信号频谱:

设计巴特沃斯滤波器实现高通滤波相关推荐

  1. MATLAB_数字信号处理_模拟滤波器_设计巴特沃斯滤波器

    简介 巴特沃斯滤波器-百度百科 巴特沃斯滤波器-维基百科 简介:巴特沃斯滤波器是一种模拟滤波器,它在频率响应方面具有特殊的属性.它被设计为具有均匀的幅度响应,即在通带内,它对所有频率的增益是相等的,而 ...

  2. matlab模拟巴特沃斯滤波器设计,巴特沃斯滤波器matlab实现

    描述 巴特沃斯滤波器的特点是通频带内的频率响应曲线最大限度平坦,没有起伏,而在阻频带则逐渐下降为零. 在振幅的对数对角频率的波特图上,从某一边界角频率开始,振幅随着角频率的增加而逐步减少,趋向负无穷大 ...

  3. 设计一个三阶巴特沃斯滤波器_设计巴特沃斯滤波器只需要确定两个参数,是什么?...

    buttord (1)[N,wc]=buttord(wp,ws,αp,αs) 用于计算巴特沃斯数字滤波器的阶数N和3dB截止频率wc. 调用参数wp,ws分别为数字滤波器的通带.阻带截止频率的归一化值 ...

  4. 数字信号处理——巴特沃斯滤波器设计

    设计思路 这里采用间接法设计数字滤波器(先设计模拟滤波器再设计数字滤波器) 滤波器理解: 1.数字滤波器可以用H(z),h(n)or系统差分方程来表示,对应的就是一个系统,信号输入该系统即可改变其所含 ...

  5. 设计一个三阶巴特沃斯滤波器_巴特沃斯滤波器频率设计及增益多项式方程

    在之前的滤波器教程中,我们研究了简单的一阶型低通和高通滤波器,它们的RC滤波器电路设计中只包含一个电阻器和一个无功元件(电容器). 在使用滤波器对信号的频谱进行整形的应用中,例如在通信或控制系统中,滚 ...

  6. 用巴特沃斯滤波器进行潮汐滤波分析

    作业记录 题目:利用某潮位站一月份的逐时潮汐观测数据,采用巴特沃斯低通滤波器进行潮汐滤波分析,求出低通滤波结果和高通滤波结果. 一.巴特沃斯滤波器及滤波器设计 巴特沃斯滤波器 巴特沃斯滤波器是一种递归 ...

  7. 巴特沃斯滤波器、切比雪夫、椭圆滤波

    滤波器概述 滤波器的作用就是过滤波形,过滤掉不需要的波形成分,与在时间上截取某一部分波形相区别,这个波形成分一般用频率来描述,也可以用模拟角频率核数字角频率来描述.从滤波器的通带范围可以分为低通.高通 ...

  8. 巴特沃斯低通滤波器归一化matlab,基于MATLAB设计巴特沃斯低通滤波器

    <基于MATLAB设计巴特沃斯低通滤波器>由会员分享,可在线阅读,更多相关<基于MATLAB设计巴特沃斯低通滤波器(6页珍藏版)>请在人人文库网上搜索. 1.基于MATLAB设 ...

  9. 巴特沃斯滤波器——python实现

    butter()函数是求Butterworth数字滤波器的系数向量,在求出系数后对信号进行滤波时需要用scipy.signal.filtfilt(). 需要安装scipy包. 函数butter() 设 ...

最新文章

  1. Zedboard学习(五):MIO与EMIO操作
  2. 文件可视化编辑_高维数据可视化必备图形平行坐标图
  3. 【广义找零钱问题】 贪心算法求解进制转换问题
  4. 201509280825_《css3——media query整理2》
  5. 毕业论文写作Tips
  6. LeetCode 1252. 奇数值单元格的数目
  7. js中push(),pop(),unshift(),shift()的用法小结
  8. 如何用python读取表_Python读取MySQL表数据的方法介绍
  9. 【图像分割】基于matalb GUI遗传神经网络图像分割【含Matlab源码 659期】
  10. CPU输入/输出的控制方式有哪些?
  11. 【Redis学习笔记】redis-trib.rb命令详解
  12. 三国演义人物出场次数
  13. 伺服阀放大器|通用型电液伺服阀放大器|伺服阀放大器厂家
  14. Chromium网页Render Layer Tree创建过程分析
  15. VVC中的熵编码-JVET提案Q2002
  16. sinon.js基础使用教程---单元测试
  17. 关于 X509Certificate2 找到文件路径的问题
  18. matlab:归一化
  19. 移动硬盘linux挂载格式化写保护,移动硬盘无法格式化?提示这张磁盘有写保护的解决方法...
  20. python灰帽编程_灰帽Python的Python

热门文章

  1. ECOSYS FS-1040 USB打印驱动安装
  2. Oracle---PLSQL案例
  3. 监控物联网项目:web、flv视频流 、websocket、ESP32
  4. 1. debian telnet安装
  5. 记openssh升级,telnet安装(环境CentOS 7.9。 晗旧版本的不同补充)
  6. java软件开发工程师证书考试费用,太完整了!
  7. 什么是BFC?它的触发条件有哪些?
  8. Javascript算法实现PDF批量加盖不同宽度骑缝章,vue加持。
  9. KL变换生成人脸特征图
  10. 2021年起重机司机(限桥式起重机)考试内容及起重机司机(限桥式起重机)最新解析