MATLAB 数字滤波
2017-02-07 10:32
281 查看
数字滤波是常用的音频处理技术
可根据技术指标,先利用 FDATool 工具
设计一个数字滤波器
再用 Filter 或 Filter2 函数即可实现滤波处理
调用的 Filter 函数格式是 Y = filte (B,A,X) 其中 B 和 A 是滤波器传输函数的分子和分母系数 X 是输入变量 Y是实现滤波后的输出变量
如果处理立体声音频信号,可分开处理,但用 FIR 滤波器时调用 Filter2 函数更方便
以012617137-scuba-diver-3.WAV 为例
实现数字滤波的程序如下
程序运行结果如图 1 所示 由图可知 滤波对波形影响不大
但对高频有较大衰减 试听会感觉到处理后的声音比较沉闷
可根据技术指标,先利用 FDATool 工具
设计一个数字滤波器
再用 Filter 或 Filter2 函数即可实现滤波处理
调用的 Filter 函数格式是 Y = filte (B,A,X) 其中 B 和 A 是滤波器传输函数的分子和分母系数 X 是输入变量 Y是实现滤波后的输出变量
如果处理立体声音频信号,可分开处理,但用 FIR 滤波器时调用 Filter2 函数更方便
以012617137-scuba-diver-3.WAV 为例
实现数字滤波的程序如下
clear; close all; clc; [X,FS]=audioread('012617137-scuba-diver-3.WAV'); % 将 WAV 文件转换成变量 %利用 FDATool 设计一个 LowpassButterworth 滤波器 %指标 FS=22050Hz Fp=1000Hz Ap=1dB Fs=3000Hz As=20dB B =[0.0062,0.0187,0.0187,0.0062]; % 分子系数 A =[1,-2.1706,1.6517,-0.4312]; % 分母系数 Y=filter(B,A,X); % 实现数字滤波 t=(0:length(X)-1)/FS; % 计算数据时刻 subplot(2,2,1);plot(t,X); % 绘制原波形图 title(' 原信号波形图 '); % 加标题 subplot(2,2,3);plot(t,Y); % 绘制滤波波形图 title(' 滤波后波形图 '); % 加标题 xf=fft(X); % 作傅里叶变换求原频谱 yf=fft(Y); % 作傅里叶变换求滤波后频谱 fm=3000*length(xf)/FS; % 确定绘频谱图的上限频率 f=(0:fm)*FS/length(xf); % 确定绘频谱图的频率刻度 subplot(2,2,2);plot(f,abs(xf(1:length(f)))); % 绘制原波形频谱图 title(' 原信号频谱图 '); % 加标题 subplot(2,2,4);plot(f,abs(yf(1:length(f)))); % 绘制滤波后频谱图 title(' 滤波后信号频谱图 '); % 加标题 audiowrite('012617137-scuba-diver-3Filter.WAV',Y,FS); % 写成 WAV 文件
程序运行结果如图 1 所示 由图可知 滤波对波形影响不大
但对高频有较大衰减 试听会感觉到处理后的声音比较沉闷
相关文章推荐
- 基于多项滤波的数字正交变换MATLAB仿真程序
- 数字图像处理,经典滤波算法去噪对比实验(Matlab实现)
- matlab 实现数字图像的傅立叶变换及滤波锐化
- Matlab数字图像 空间滤波
- Matlab fspecial和imfilter对图像进行空间滤波
- 频率域滤波基础之四(读数字图像处理学习halcon)
- 实验六---数字图像的噪声去除(MATLAB实现)
- 【Matlab学习笔记】【图像滤波去噪】中值滤波
- 【Matlab学习笔记】【图像滤波去噪】以-4,-8为中心的拉普拉斯滤波器
- matlab在数字图像处理笔记(2)
- 【转】谈谈高速数字系统的滤波电容
- Matlab 文档合并与字母,数字拆分
- 双边滤波Matlab实现<The Bilateral Filter>
- MATLAB 用for循环语句连续读入并处理一系列图片(图片名含数字和字符)
- matlab绘图的坐标轴数字、范围、间隔控制
- 分享快速双边滤波matlab程序
- 数字滤波
- 基于MATLAB的线性代数 对矩阵求行列式(具体数字)
- [数字图像处理]频域滤波(1)--基础与低通滤波器
- Matlab 多项式拟合、稳健滤波等实用函数