快毕业了,把自己写的现成的matlab函数分享给有需要的人,由于个人水平有限,写的不好请见谅,愿意拍砖的尽管拍好了。目前还不考虑读博,所以写的程序仍了可惜,所以就拿出来分享。好了不废话了,开始正题。

以下两个滤波器都是切比雪夫I型数字滤波器,不是巴特沃尔滤波器,请使用者注意!

1.低通滤波器

使用说明:将下列代码幅值然后以m文件保存,文件名要与函数名相同,这里函数名:lowp。

function y=lowp(x,f1,f3,rp,rs,Fs)

%低通滤波

%使用注意事项:通带或阻带的截止频率的选取范围是不能超过采样率的一半

%即,f1,f3的值都要小于 Fs/2

%x:需要带通滤波的序列

% f 1:通带截止频率

% f 3:阻带截止频率

%rp:边带区衰减DB数设置

%rs:截止区衰减DB数设置

%FS:序列x的采样频率

% rp=0.1;rs=30;%通带边衰减DB值和阻带边衰减DB值

% Fs=2000;%采样率

%

wp=2*pi*f1/Fs;

ws=2*pi*f3/Fs;

% 设计切比雪夫滤波器;

[n,wn]=cheb1ord(wp/pi,ws/pi,rp,rs);

[bz1,az1]=cheby1(n,rp,wp/pi);

%查看设计滤波器的曲线

[h,w]=freqz(bz1,az1,256,Fs);

h=20*log10(abs(h));

figure;plot(w,h);title('所设计滤波器的通带曲线');grid on;

%

y=filter(bz1,az1,x);%对序列x滤波后得到的序列y

end

--------------------------------------

低通滤波器使用例子的代码

fs=2000;

t=(1:fs)/fs;

ff1=100;

ff2=400;

x=sin(2*pi*ff1*t)+sin(2*pi*ff2*t);

figure;

subplot(211);plot(t,x);

subplot(212);hua_fft(x,fs,1);

%低通测试

% y=filter(bz1,az1,x);

y=lowp(x,300,350,0.1,20,fs);

figure;

subplot(211);plot(t,y);

subplot(212);hua_fft(y,fs,1);%hua_fft()函数是画频谱图的函数,代码在下面给出,要保存为m文件调用

%这段例子还调用了我自己写的专门画频谱图的函数,也给出,不然得不出我的结果

%画信号的幅频谱和功率谱

%频谱使用matlab例子表示

function hua_fft(y,fs,style,varargin)

%当style=1,画幅值谱;当style=2,画功率谱;当style=其他的,那么花幅值谱和功率谱

%当style=1时,还可以多输入2个可选参数

%可选输入参数是用来控制需要查看的频率段的

%第一个是需要查看的频率段起点

%第二个是需要查看的频率段的终点

%其他style不具备可选输入参数,如果输入发生位置错误

nfft= 2^nextpow2(length(y));%找出大于y的个数的最大的2的指数值(自动进算最佳FFT步长nfft)

%nfft=1024;%人为设置FFT的步长nfft

y=y-mean(y);%去除直流分量

y_ft=fft(y,nfft);%对y信号进行DFT,得到频率的幅值分布

y_p=y_ft.*conj(y_ft)/nfft;%conj()函数是求y函数的共轭复数,实数的共轭复数是他本身。

y_f=fs*(0:nfft/2-1)/nfft;�T变换后对应的频率的序列

% y_p=y_ft.*conj(y_ft)/nfft;%conj()函数是求y函数的共轭复数,实数的共轭复数是他本身。

if style==1

if nargin==3

plot(y_f,2*abs(y_ft(1:nfft/2))/length(y));%matlab的帮助里画FFT的方法

%ylabel('幅值');xlabel('频率');title('信号幅值谱');

%plot(y_f,abs(y_ft(1:nfft/2)));%论坛上画FFT的方法

else

f1=varargin{1};

fn=varargin{2};

ni=round(f1 * nfft/fs+1);

na=round(fn * nfft/fs+1);

plot(y_f(ni:na),abs(y_ft(ni:na)*2/nfft));

end

elseif style==2

plot(y_f,y_p(1:nfft/2));

%ylabel('功率谱密度');xlabel('频率');title('信号功率谱');

else

subplot(211);plot(y_f,2*abs(y_ft(1:nfft/2))/length(y));

ylabel('幅值');xlabel('频率');title('信号幅值谱');

subplot(212);plot(y_f,y_p(1:nfft/2));

ylabel('功率谱密度');xlabel('频率');title('信号功率谱');

end

end

下面三幅图分别是滤波前的时频图,滤波器的滤波特性曲线图和滤波后的时频图,通过图可以看出成功留下了100Hz的低频成分而把不要的高频成分去除了。

2.高通滤波器

function y=highp(x,f1,f3,rp,rs,Fs)

%高通滤波

%使用注意事项:通带或阻带的截止频率的选取范围是不能超过采样率的一半

%即,f1,f3的值都要小于 Fs/2

%x:需要带通滤波的序列

% f 1:通带截止频率

% f 2:阻带截止频率

%rp:边带区衰减DB数设置

%rs:截止区衰减DB数设置

%FS:序列x的采样频率

% rp=0.1;rs=30;%通带边衰减DB值和阻带边衰减DB值

% Fs=2000;%采样率

%

wp=2*pi*f1/Fs;

ws=2*pi*f3/Fs;

% 设计切比雪夫滤波器;

[n,wn]=cheb1ord(wp/pi,ws/pi,rp,rs);

[bz1,az1]=cheby1(n,rp,wp/pi,'high');

%查看设计滤波器的曲线

[h,w]=freqz(bz1,az1,256,Fs);

h=20*log10(abs(h));

figure;plot(w,h);title('所设计滤波器的通带曲线');grid on;

y=filter(bz1,az1,x);

end

下面是高通滤波器的例子

fs=2000;

t=(1:fs)/fs;

ff1=100;

ff2=400;

x=sin(2*pi*ff1*t)+sin(2*pi*ff2*t);

figure;

subplot(211);plot(t,x);

subplot(212);hua_fft(x,fs,1);

%------高通测试

z=highp(x,350,300,0.1,20,fs);

figure;

subplot(211);plot(t,z);

subplot(212);hua_fft(z,fs,1);

下面三幅图分别是滤波前的时频图,滤波器的滤波特性曲线图和滤波后的时频图,通过图可以看出成功留下了400Hz的高频成分而把不要的低频成分100Hz去除了。

指数高通滤波器代码_分享matlab程序之——滤波器篇(高通,低通)相关推荐

  1. 分享matlab程序之——滤波器篇(高通,低通)

    快毕业了,把自己写的现成的matlab函数分享给有需要的人,由于个人水平有限,写的不好请见谅,愿意拍砖的尽管拍好了.目前还不考虑读博,所以写的程序仍了可惜,所以就拿出来分享.好了不废话了,开始正题. ...

  2. 指数高通滤波器代码_ImageEnhance 对数字图像进行频域滤波,有Butterworth低通 、 高通 、指数 CSharp C#编程 251万源代码下载- www.pudn.com...

    文件名称: ImageEnhance下载  收藏√  [ 5  4  3  2  1 ] 开发工具: C++ 文件大小: 1163 KB 上传时间: 2016-01-15 下载次数: 0 提 供 者: ...

  3. 指数高通滤波器代码_影像组学学习笔记1-2——高通滤波法及应用

    笔记1-1中,我和大家一起学习了一种基于空域变换的图像增强法,今天在1-2我将介绍一种基于频域滤波增强的方法--高通滤波法. 图像的频域滤波增强是利用图像变换方法将原来图像空间中的图像以某种形式转换到 ...

  4. 解抛物型微分方程c语言程序,偏微分方程的matlab代码_偏微分方程matlab程序,matlab偏微分代码...

    matlab偏微分方程含源代码,大家可以下载运行,里面的都能用 Pie Eais ae h t lat BLep 话k气飞"目基回 古班比比,一生热件身的些懂 1身定 回量1 古典显式格式稳 ...

  5. matlab模拟三体运动_如何写出三体的MATLAB程序-理论分析篇

    如何写出三体的MATLAB程序-理论分析篇 写在前面 之所以写这个程序,是因为某天晚上无聊,室友正在学习MATLAB,于是提议写一个三体运动的物理模拟程序来练练手.就此,我也写一份该程序来为室友做一个 ...

  6. matlab 多 带阻,matlab程序之——滤波器(带通-带阻

    <matlab程序之--滤波器(带通-带阻>由会员分享,可在线阅读,更多相关<matlab程序之--滤波器(带通-带阻(8页珍藏版)>请在人人文库网上搜索. 1.matlab程 ...

  7. 【Matlab图像去噪】高通+低通+带通+方向滤波器图像滤波【含源码 1209期】

    一.代码运行视频(哔哩哔哩) [Matlab图像去噪]高通+低通+带通+方向滤波器图像滤波[含源码 1209期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  8. 高阶低通滤波算法_高/低算法

    高阶低通滤波算法 介绍 在我以前的文章中,我谈到了各种数据库标识符策略,在设计数据库模型时需要注意. 我们得出的结论是,数据库序列非常方便,因为它们在大多数用例中既灵活又高效. 但是,即使具有缓存的序 ...

  9. fama matlab源码_用matlab程序做Fama-MacBeth回归的代码

    求[100,200]之间第二个能被15整除的整数.(用Matlab程序做) x=100:200;>>n=find(rem(x,15)==0);>>X=x(n(2))很简单的两句 ...

最新文章

  1. Sublime text 2/3 中 Package Control 的安装与使用方法
  2. phpMyAdmin安装
  3. 503 service unavailable错误提示如何解决
  4. Linux系统挂载NTFS文件系统
  5. HDU - 3486 Interviewe(RMQ-st表+暴力)
  6. ThinkPHP分页链接支持数组参数的办法
  7. 理发店管理系统java_美容美发店管理系统的设计与实现(JSP,SQLServer)(含录像)
  8. vue中ast生成render
  9. 机器人环境感知算法发展概述
  10. 关于 Openresty 的两三事
  11. HCIE-Security Day38:理论学习:信息安全管理
  12. go语言多态接口样例
  13. 8.总线设备驱动模型
  14. python之捕鱼问题
  15. 我们且请仁兄到敝庄 水浒
  16. 叮咚同城小程序问题:点击发布信息按钮自动闪退到首页的解决方法
  17. Auto.js加密解密|快照Snapshot解密|Dex转js|Auto.js庖丁下载|解除APP限制
  18. 金蝶K3系统19年度增值税率调整(16改13,10改9)操作步骤
  19. RabbitMQ管理界面操作详情
  20. Java中Integer.MAX_VALUE/Integer.MIN_VALUE的含义

热门文章

  1. 《看监守自盗——2008年金融危机》有感
  2. 【流放之路-第三章】
  3. 人长得是漂亮,但论文是抄的:她的硕士、博士学位或将全被撤回!
  4. python pandas读取txt文件_python 读取文件夹中所有同类型的文件 并用pandas合并
  5. php 钩子函数,钩子函数是什么
  6. ubuntu 下一个聊天工具
  7. php天气免费查询,基于聚合数据的免费天气预报接口查询-PHP版
  8. 时标网络图-案例计算题
  9. 更新了那个最小的ruby飞信客户端
  10. Java中的一些奇淫技巧总结