matlab通过带通滤波器代码,设计一个matlab带通滤波器代码
盘国英谭婷的回答:
你自己整合吧,我没时间帮你整合,我给你提供一些程序:
绝对正确的代码:程序1:
fs=22050;
%语音信号采样频率为22050
x1=wavread('windows
critical
stop.wav');
%读取语音信号的数据,赋给变量x1
sound(x1,22050);
%播放语音信号
y1=fft(x1,1024);
%对信号做1024点fft变换
f=fs*(0:511)/1024;
figure(1)
plot(x1)
%做原始语音信号的时域图形
title('原始语音信号');
xlabel('time
n');
ylabel('fuzhi
n');
figure(2)
freqz(x1)
%绘制原始语音信号的频率响应图
title('频率响应图')
figure(3)
subplot(2,1,1);
plot(abs(y1(1:512)))
%做原始语音信号的fft频谱图
title('原始语音信号fft频谱')
subplot(2,1,2);
plot(f,abs(y1(1:512)));
title('原始语音信号频谱')
xlabel('hz');
ylabel('fuzhi');
程序2:
fs=22050;
%语音信号采样频率为22050
x1=wavread('windows
critical
stop.wav');
%读取语音信号的数据,赋给变量x1
t=0:1/22050:(size(x1)-1)/22050;
y1=fft(x1,1024);
%对信号做1024点fft变换
f=fs*(0:511)/1024;
x2=randn(1,length(x1));
%产生一与x长度一致的随机信号
sound(x2,22050);
figure(1)
plot(x2)
%做原始语音信号的时域图形
title('高斯随机噪声');
xlabel('time
n');
ylabel('fuzhi
n');
randn('state',0);
m=randn(size(x1));
x2=0.1*m+x1;
sound(x2,22050);%播放加噪声后的语音信号
y2=fft(x2,1024);
figure(2)
plot(t,x2)
title('加噪后的语音信号');
xlabel('time
n');
ylabel('fuzhi
n');
figure(3)
subplot(2,1,1);
plot(f,abs(y2(1:512)));
title('原始语音信号频谱');
xlabel('hz');
ylabel('fuzhi');
subplot(2,1,2);
plot(f,abs(y2(1:512)));
title('加噪后的语音信号频谱');
xlabel('hz');
ylabel('fuzhi');
根据以上代码,你可以修改下面有错误的代码
程序3:双线性变换法设计butterworth滤波器
fs=22050;
x1=wavread('h:\课程设计2\shuzi.wav');
t=0:1/22050:(size(x1)-1)/22050;
au=0.03;
d=[au*cos(2*pi*5000*t)]';
x2=x1+d;
wp=0.25*pi;
ws=0.3*pi;
rp=1;
rs=15;
fs=22050;
ts=1/fs;
wp1=2/ts*tan(wp/2);
%将模拟指标转换成数字指标
ws1=2/ts*tan(ws/2);
[n,wn]=buttord(wp1,ws1,rp,rs,'s');
%选择滤波器的最小阶数
[z,p,k]=buttap(n);
%创建butterworth模拟滤波器
[bap,aap]=zp2tf(z,p,k);
[b,a]=lp2lp(bap,aap,wn);
[bz,az]=bilinear(b,a,fs);
%用双线性变换法实现模拟滤波器到数字滤波器的转换
[h,w]=freqz(bz,az);
%绘制频率响应曲线
figure(1)
plot(w*fs/(2*pi),abs(h))
grid
xlabel('频率/hz')
ylabel('频率响应幅度')
title('butterworth')
f1=filter(bz,az,x2);
figure(2)
subplot(2,1,1)
plot(t,x2)
%画出滤波前的时域图
title('滤波前的时域波形');
subplot(2,1,2)
plot(t,f1);
%画出滤波后的时域图
title('滤波后的时域波形');
sound(f1,22050);
%播放滤波后的信号
f0=fft(f1,1024);
f=fs*(0:511)/1024;
figure(3)
y2=fft(x2,1024);
subplot(2,1,1);
plot(f,abs(y2(1:512)));
%画出滤波前的频谱图
title('滤波前的频谱')
xlabel('hz');
ylabel('fuzhi');
subplot(2,1,2)
f1=plot(f,abs(f0(1:512)));
%画出滤波后的频谱图
title('滤波后的频谱')
xlabel('hz');
ylabel('fuzhi');
程序4:窗函数法设计滤波器:
fs=22050;
x1=wavread('h:\课程设计2\shuzi.wav');
t=0:1/22050:(size(x1)-1)/22050;
au=0.03;
d=[au*cos(2*pi*5000*t)]';
x2=x1+d;
wp=0.25*pi;
ws=0.3*pi;
wdelta=ws-wp;
n=ceil(6.6*pi/wdelta);
%取整
wn=(0.2+0.3)*pi/2;
b=fir1(n,wn/pi,hamming(n+1));
%选择窗函数,并归一化截止频率
figure(1)
freqz(b,1,512)
f2=filter(bz,az,x2)
figure(2)
subplot(2,1,1)
plot(t,x2)
title('滤波前的时域波形');
subplot(2,1,2)
plot(t,f2);
title('滤波后的时域波形');
sound(f2,22050);
%播放滤波后的语音信号
f0=fft(f2,1024);
f=fs*(0:511)/1024;
figure(3)
y2=fft(x2,1024);
subplot(2,1,1);
plot(f,abs(y2(1:512)));
title('滤波前的频谱')
xlabel('hz');
ylabel('fuzhi');
subplot(2,1,2)
f2=plot(f,abs(f0(1:512)));
title('滤波后的频谱')
xlabel('hz');
ylabel('fuzhi');
hbchifan的回答:
% 用切比雪夫最佳一致逼近设计线性相位FIR带通滤波器;
%信号为0.5hz, 0.9hz, 1.1hz和1.5hz的正统信号叠加组成
%通带为[0.9,1.1]
%频谱分辨率与信号实际长度N成正比
clear all;
f1=0.5;f2=0.9;f3=1.1;f4=1.5;t=0:1203;N=length(t);fs=10;M=512;
x1=sin(2*pi*(f1/fs)*t)+sin(2*pi*(f2/fs)*t)+sin(2*pi*(f3/fs)*t)+sin(2*pi*(f4/fs)*t);
figure(1);
subplot(211);plot(t,x1);title('原信号');
y=fft(x1);
f=(0:1/N:1/2-1/N)*fs;
subplot(212);plot(f,abs(y(1:N/2)));grid;xlabel('hz');%处理前频谱
wc1=2*f2/fs;wc2=2*f3/fs;wc3=2*f4/fs;%归一化角频率,用于下面的f1
f1=[0 wc1-0.05 wc1 wc2 wc2+0.05 1];
A=[0 0 1 1 0 0];%设置带通或带阻,1为带通,0为带阻
weigh=[1 1 1 ];%设置通带和阻带的权重
b=remez(60,f1,A,weigh);%传函分子
h1=freqz(b,1,M);%幅频特性
figure(2)
f=(0:1/M:1-1/M)*fs/2;
subplot(211);plot(f,abs(h1));grid;title('带通');
x2=filter(b,1,x1);
S1=fft(x2);
f=(0:1/N:1/2-1/N)*fs;
subplot(212);plot(f,abs(S1(1:N/2)));grid;xlabel('hz');%处理后频谱
matlab通过带通滤波器代码,设计一个matlab带通滤波器代码相关推荐
- iir数字滤波器设计及matlab实现,iir数字滤波器设计及其matlab实现
iir数字滤波器设计及其matlab实现 1IIR 数字滤波器设计及其 MATLAB 实现自动化学院 杨梅 201422070125摘 要IIR 数 字 滤 波 器 在 设 计 上 可 以 借 助 成 ...
- MATLAB用fsamp2函数设计一个近似对称的二维带通滤波器
%用fsamp2函数设计一个近似对称的二维带通滤波器,通带范围[0.1 0.5] %创建一个包含期望带通响应的矩阵Hd %首先用函数freqspace创建频率范围向量f1和f2 subplot(121 ...
- 自适应滤波器设计及matlab实现,自适应滤波器设计及Matlab实现附程序代码
自适应滤波器设计及Matlab实现附程序代码 维纳自适应滤波器设计及 Matlab 实现摘 要本文从随机噪声的特性出发,分析了传统滤波和自适应滤波基本工作原理和性能,以及滤波技术的现状和发展前景.然后 ...
- MATLAB GUI图形界面设计一个学生管理系统
设计一个简单的学生成绩管理程序,包含如下功能: 1.可创建不少于100名学生成员: 2.每名成员的记录包括:学号.姓名.专业和5门课程的成绩: 3.能够实现添加.删除.修改学生成员:(增加非法字符警 ...
- matlab中gui的设计,[转]MATLAB中GUI设计领悟
来源:隐藏 -------------------------全文分割线---------------------------------------------------------------- ...
- 与matlab有关的课程设计,关于MATLAB 的课程设计
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 <Matlab>课程设计 一.课程设计目的 MATLAB是一种以数值计算和数据图示为主的计算机软件,并包含适应多个学科的专业软件包,以及完善程 ...
- matlab图形与动画设计 pdf,MATLAB图形与动画设计
基本信息 书名:MATLAB图形与动画设计 **:36.00元 售价:34.2元,便宜1.8元,折扣95 作者:张德丰,赵书梅,刘国希 出版社:国防工业出版社 出版日期:2009-04-01 ISBN ...
- 基于matlab的倒立摆设计,基于matlab的倒立摆设计.doc
基于matlab的倒立摆设计.doc 摘要IAbstract.II第一章绪论11.1倒立摆的研究背景.11.2国内外现状.21.3应解决的问题和技术要求.21.4工作内容.3第二章MATLAB仿真软件 ...
- matlab编程与最优化设计应用,MATLAB编程与最优化设计应用
MATLAB编程与最优化设计应用 出版时间:2013年08月 定 价:59.00 I S B N :9787121210525 所属分类: 计算机•网络  计算机•网络 > ...
- matlab滤除某一频率的信号,设计一个matlab带通滤波器代码采样频率10Hz,滤除除0.9-1.1Hz之外的其他信号,信号输入为x1,输出为x2,不明白的问我可以追加条件,运行好使的追加分...
优质解答 % 用切比雪夫最佳一致逼近设计线性相位FIR带通滤波器: %信号为0.5hz, 0.9hz, 1.1hz和1.5hz的正统信号叠加组成 %通带为[0.9,1.1] %频谱分辨率与信号实际长度 ...
最新文章
- java爬树方法_Java-grandMother.java
- Handler详细说明系列(六)——View的post()详解
- 【PC工具】更新:在线智能抠图工具,在线视频、图片、音频等转换工具,绿色免安装抠图神奇抠图工具...
- C#发送Email邮件方法总结
- StreamWriter类的一般使用方法
- 域控服务器取消验证_记一次域控服务器应急
- 概率论 方差公式_【考研数学】概率论与数理统计
- CentOS下配置多个Tomcat同时运行 本篇文章来源于 Linux公社网站(www.linuxidc.com)
- 【BZOJ5093】图的价值
- Android context.getSystemService的简单说明
- jfreeChart生成报表
- crmeb重新安装_CRMEB系统安装访问不了
- VMware虚拟机鼠标失灵怎么办
- Redis主从复制原理
- OpenJ_Bailian - 2711
- web前端移动端课程之canvas教程系列
- PS制作压印效果的logo等
- 超级计算机的内部图,中科院首次获得了宇宙中全尺度暗晕内部结构的清晰图像...
- win11解决右键卡顿
- 基于嵌入式的远程温度检测控制(论文)
热门文章
- AIX环境安装DB2 数据库
- mysql毕业生信息管理系统_Ssh2+Mysql实现的毕业生去向登记就业信息管理系统
- 中国石油大学计算机专业调剂信息,中国石油大学(北京)地球科学学院2020级硕士研究生招生缺额信息发布公告...
- Qt配置OpenCV教程
- Eprime error number 1234 :unable to load sound 203
- 关键词文章自动生成工具-关键词组合工具-关键词文章采集工具
- 问答 | 我适合做软件开发吗?
- linux入门命令总结
- HTML5基础教程(14)Web SQL 数据库
- 基于springboot在线租车管理系统