基于MATLAB的语音信号FIR数字滤波处理

合集下载

用MATLAB设计FIR数字滤波器

用MATLAB设计FIR数字滤波器

实验八 用MATLAB 设计FIR 数字滤波器(二)一、实验目旳:1、加深对窗函数法设计FIR 数字滤波器旳基本原理旳理解。

2、学习用MATLAB 语言旳窗函数法编写设计FIR 数字滤波器旳程序。

3、理解MATLAB 语言有关窗函数法设计FIR 数字滤波器旳常用函数用法。

二、实验原理:1、用窗函数法设计FIR 数字滤波器 FIR 数字滤波器旳系统函数为N-1-n n=0H(z)=h(n)z ∑这个公式也可以当作是离散LSI 系统旳系统函数M-m -1-2-mmm=0012m N -1-2-k-k12k k k=1bz b +b z +b z ++b z Y(z)b(z)H(z)====X(z)a(z)1+a z +a z ++a z1+a z ∑∑ 分母a 0为1,其他a k 全都为0时旳一种特例。

由于极点所有集中在零点,稳定和线性相位特性是FIR 滤波器旳突出长处,因此在实际中广泛使用。

FIR 滤波器旳设计任务是选择有限长度旳h(n),使传播函数H(e j ω)满足技术规定。

重要设计措施有窗函数法、频率采样法和切比雪夫等波纹逼近法等。

本实验重要简介窗函数法。

用窗函数法设计FIR 数字滤波器旳基本环节如下:(1)根据过渡带和阻带衰减指标选择窗函数旳类型,估算滤波器旳阶数N 。

(2)由数字滤波器旳抱负频率响应H(e j ω)求出其单位脉冲响应h d (n)。

可用自定义函数ideal_lp实现抱负数字低通滤波器单位脉冲响应旳求解。

程序清单如下:function hd=ideal_lp(wc,N) %点0到N-1之间旳抱负脉冲响应%wc=截止频率(弧度)%N=抱负滤波器旳长度tao=(N-1)/2;n=[0:(N-1)];m=n-tao+eps; %加一种小数以避免0作除数hd=sin(wc*m)./(pi*m);其他选频滤波器可以由低通频响特性合成。

如一种通带在ωc1~ωc2之间旳带通滤波器在给定N值旳条件下,可以用下列程序实现:Hd=ideal_lp(wc2,N)-ideal_lp(wc1,N)(3)计算数字滤波器旳单位冲激响应h(n)=w(n)h d(n)。

基于MATLAB的语音信号FIR数字滤波处理

基于MATLAB的语音信号FIR数字滤波处理

目录1 绪论 (2)2课程设计的具体实现 (4)2.1 语音信号的录制 (4)2.2 FIR滤波器的设计方法 (4)3语音信号的时频分析 (5)3.1语音信号载入MATLAB (5)3.2语音信号时域和频域分析 (6)3.3设计FIR数字滤波器 (7)3.3.1 窗函数hamming设计带通滤波器 (8)3.3.2 窗函数hanning设计带通滤波器 (9)3.3.3 窗函数Blackman设计带通滤波器 (10)3.3.4 窗函数Boxcar设计带通滤波器 (11)3.4滤波之后的时域和频域分析 (12)3.4.1 窗函数hamming设计带通滤波器滤波 (13)3.4.2 窗函数hanning设计带通滤波器滤波 (13)3.4.3 窗函数Blackman设计带通滤波器滤波 (14)3.4.4 窗函数Boxcar设计带通滤波器滤波 (15)3.5回放语音信号 (16)结论 (16)参考文献 (18)1 绪论数字信号处理是利用计算机或专用处理设备,以数值计算的方法对信号进行采集、抽样、变换、综合、估值与识别等加工处理,借以达到提取信息和便于应用的目的。

它在语音、雷达、图像、系统控制、通信、航空航天、生物医学等众多领域都获得了极其广泛的应用。

具有灵活、精确、抗干扰强、设备尺寸小、造价低、速度快等优点。

数字滤波器, 是数字信号处理中及其重要的一部分。

随着信息时代和数字技术的发展,受到人们越来越多的重视。

数字滤波器可以通过数值运算实现滤波,所以数字滤波器处理精度高、稳定、体积小、重量轻、灵活不存在阻抗匹配问题,可以实现模拟滤波器无法实现的特殊功能。

数字滤波器种类很多,根据其实现的网络结构或者其冲激响应函数的时域特性,可分为两种,即有限冲激响应( FIR,Finite Impulse Response)滤波器和无限冲激响应( IIR,Infinite Impulse Response)滤波器。

FIR滤波器结构上主要是非递归结构,没有输出到输入的反馈,系统函数H (z)在处收敛,极点全部在z = 0处(因果系统),因而只能用较高的阶数达到高的选择性。

基于MATLAB的IIR和FIR滤波器的设计与实现要点

基于MATLAB的IIR和FIR滤波器的设计与实现要点

基于MATLAB的IIR和FIR滤波器的设计与实现要点IIR和FIR滤波器是数字信号处理中常用的滤波器设计方法,它们分别基于无限脉冲响应(IIR)和有限脉冲响应(FIR)的理论基础。

本文将对基于MATLAB的IIR和FIR滤波器的设计与实现要点进行详细的介绍。

1.滤波器设计方法IIR滤波器设计方法主要有两种:基于模拟滤波器的方法和基于离散系统的方法。

前者将模拟滤波器的传递函数转化为离散滤波器的传递函数,常用方法有:脉冲响应不变法、双线性变换法等,MATLAB中提供了相关函数实现这些方法。

后者直接根据滤波器的要求设计离散系统的传递函数,常用方法有:Butterworth、Chebyshev等,MATLAB中也提供了相应的函数实现这些方法。

2.滤波器参数的选择选择合适的滤波器参数是IIR滤波器设计中的关键步骤。

根据滤波器的型号和设定的滤波器规格,主要需要选择的参数包括:滤波器阶数、截止频率、通带和阻带的衰减等。

一般情况下,滤波器阶数越高,滤波器的性能越好,但计算量也会增加,所以需要进行权衡。

3.滤波器实现方法基于MATLAB的IIR滤波器可以通过直接的形式或级联形式实现。

直接形式直接使用传递函数的表达式计算输出样本;级联形式则将传递函数分解为多个较小的子滤波器,逐级计算输出样本,并将各级输出进行累加。

选择哪种形式取决于具体的应用需要和滤波器的阶数。

4.滤波器性能评估设计好IIR滤波器后,需要对其性能进行评估,判断滤波器是否满足要求。

主要评估指标包括:幅频响应、相频响应、群延迟等。

MATLAB提供了多种绘制频域和时域响应曲线的函数,可以用来评估IIR滤波器的性能。

1.滤波器设计方法FIR滤波器设计主要有两种方法:窗函数法和最优化法。

窗函数法是最简单的设计方法,它通过对理想滤波器的频率响应进行窗函数加权来获得滤波器的时域响应,常用的窗函数有:矩形窗、汉宁窗、布莱克曼窗等。

最优化法则通过优化其中一种准则函数,如最小二乘法、Chebyshev等,得到最优的FIR滤波器。

基于matlab的fir数字滤波器的设计

基于matlab的fir数字滤波器的设计

一、引言数字滤波器是数字信号处理中至关重要的组成部分,它能够对数字信号进行滤波处理,去除噪音和干扰,提取信号中的有效信息。

其中,fir数字滤波器作为一种常见的数字滤波器类型,具有稳定性强、相位响应线性等特点,在数字信号处理领域得到了广泛的应用。

本文将基于matlab软件,探讨fir数字滤波器的设计原理、方法和实现过程,以期能够全面、系统地了解fir数字滤波器的设计流程。

二、fir数字滤波器的基本原理fir数字滤波器是一种有限长冲激响应(finite impulse response, FIR)的数字滤波器,其基本原理是利用线性相位特性的滤波器来实现对数字信号的筛选和处理。

fir数字滤波器的表达式为:$$y(n) = \sum_{k=0}^{M}h(k)x(n-k)$$其中,y(n)为输出信号,x(n)为输入信号,h(k)为滤波器的系数,M为滤波器的长度。

fir数字滤波器的频率响应特性由其系数h(k)决定,通过设计合适的系数,可以实现对不同频率成分的滤波效果。

三、fir数字滤波器的设计方法fir数字滤波器的设计方法主要包括窗函数法、频率抽样法、最小最大法等。

在matlab中,可以通过信号处理工具箱提供的fir1函数和firls函数等来实现fir数字滤波器的设计。

下面将分别介绍这两种设计方法的基本原理及实现步骤。

1. 窗函数法窗函数法是fir数字滤波器设计中最为常见的方法之一,其基本原理是通过对理想滤波器的频率响应进行窗函数加权来满足设计要求。

在matlab中,可以使用fir1函数实现fir数字滤波器的设计,其调用格式为:h = fir1(N, Wn, type)其中,N为滤波器的阶数,Wn为滤波器的截止频率,type为窗函数的类型。

通过调用fir1函数,可以灵活地设计出满足特定要求的fir数字滤波器。

2. 频率抽样法频率抽样法是fir数字滤波器设计中的另一种重要方法,其基本原理是在频域上对理想滤波器的频率响应进行抽样,并拟合出一个最优的滤波器。

基于MATLAB设计FIR滤波器

基于MATLAB设计FIR滤波器

基于MATLAB设计FIR滤波器FIR(Finite Impulse Response)滤波器是一种数字滤波器,它具有有限的冲激响应长度。

基于MATLAB设计FIR滤波器可以使用signal工具箱中的fir1函数。

fir1函数的语法如下:b = fir1(N, Wn, window)其中,N是滤波器的阶数,Wn是截止频率,window是窗函数。

要设计一个FIR低通滤波器,可以按照以下步骤进行:步骤1:确定滤波器的阶数。

阶数决定了滤波器的截止频率的陡峭程度。

一般情况下,阶数越高,滤波器的陡峭度越高,但计算复杂度也会增加。

步骤2:确定滤波器的截止频率。

截止频率是指在滤波器中将信号的频率限制在一定范围内的频率。

根据应用的需求,可以选择适当的截止频率。

步骤3:选择窗函数。

窗函数是为了在时域上窗口函数中心增加频率衰减因子而使用的函数。

常用的窗函数有Hamming、Hanning等。

窗函数可以用来控制滤波器的幅度响应特性,使得它更平滑。

步骤4:使用fir1函数设计滤波器。

根据以上步骤确定滤波器的阶数、截止频率和窗函数,可以使用fir1函数设计FIR滤波器。

具体代码如下:N=50;%设定阶数Wn=0.5;%设定截止频率window = hanning(N + 1); % 使用Hanning窗函数步骤5:使用filter函数对信号进行滤波。

设计好FIR滤波器后,可以使用filter函数对信号进行滤波。

具体代码如下:filtered_signal = filter(b, 1, input_signal);其中,input_signal是输入信号,filtered_signal是滤波后的信号。

以上,便是基于MATLAB设计FIR滤波器的简要步骤和代码示例。

根据具体需求和信号特性,可以进行相应的调整和优化。

基于MATLAB的FIR和IIR数字滤波器的设计

基于MATLAB的FIR和IIR数字滤波器的设计

基于MATLAB的FIR和IIR数字滤波器的设计一、本文概述随着数字信号处理技术的飞速发展,数字滤波器作为其中的核心组件,已经广泛应用于通信、音频处理、图像处理、生物医学工程等诸多领域。

在数字滤波器中,有限脉冲响应(FIR)滤波器和无限脉冲响应(IIR)滤波器是最常见的两种类型。

它们各自具有独特的优点和适用场景,因此,对这两种滤波器的深入理解和设计掌握是工程师和研究人员必备的技能。

本文旨在通过MATLAB这一强大的工程计算工具,详细介绍FIR 和IIR数字滤波器的设计原理、实现方法以及对比分析。

我们将简要回顾数字滤波器的基本概念和分类,然后重点阐述FIR和IIR滤波器的设计理论,包括窗函数法、频率采样法、最小均方误差法等多种设计方法。

接下来,我们将通过MATLAB编程实现这些设计方法,并展示如何根据实际应用需求调整滤波器参数以达到最佳性能。

本文还将对FIR和IIR滤波器进行性能对比,分析它们在不同应用场景下的优缺点,并提供一些实用的设计建议。

我们将通过几个典型的应用案例,展示如何在MATLAB中灵活应用FIR和IIR滤波器解决实际问题。

通过阅读本文,读者将能够深入理解FIR和IIR数字滤波器的设计原理和实现方法,掌握MATLAB在数字滤波器设计中的应用技巧,为未来的工程实践和研究工作打下坚实的基础。

二、FIR滤波器设计有限脉冲响应(FIR)滤波器是一种数字滤波器,其特点是其脉冲响应在有限的时间后为零。

因此,FIR滤波器是非递归的,没有反馈路径,从而保证了系统的稳定性。

在设计FIR滤波器时,我们主要关注的是滤波器的阶数、截止频率和窗函数的选择。

在MATLAB中,有多种方法可以用来设计FIR滤波器。

其中,最常用的方法是使用fir1函数,该函数可以设计一个线性相位FIR滤波器。

该函数的基本语法是b = fir1(n, Wn),其中n是滤波器的阶数,Wn是归一化截止频率,以π为单位。

该函数返回一个长度为n+1的滤波器系数向量b。

基于MATLAB与CCS的FIR滤波器设计与实现

基于MATLAB与CCS的FIR滤波器设计与实现

基于MATLAB与CCS的FIR滤波器设计与实现FIR滤波器(Finite Impulse Response Filter)是一种常用的数字滤波器,特点是系统的冲激响应为有限长度,所以也称为有限冲激响应滤波器。

FIR滤波器具有线性相位特性、较好的频率响应控制以及稳定性等优点。

在MATLAB和CCS软件中,我们可以使用不同的方法来设计和实现FIR滤波器。

首先,我们来介绍如何在MATLAB中设计和实现FIR滤波器。

MATLAB 提供了fir1函数来设计FIR滤波器。

该函数可以根据给定的滤波器阶数和截止频率来生成FIR滤波器系数。

例如,如果我们想设计一个截止频率为0.2的10阶低通FIR滤波器,可以使用以下代码:```MATLABorder = 10; % 滤波器阶数cutoff = 0.2; % 截止频率b = fir1(order, cutoff); % 设计FIR滤波器```生成的滤波器系数b可以用于过滤输入信号。

例如,我们可以使用filter函数将一个输入信号x通过滤波器进行滤波:```MATLABx=...;%输入信号y = filter(b, 1, x); % 通过滤波器滤波```在CCS软件中,我们可以使用DSP/BIOS中提供的模块来实现FIR滤波器。

首先,我们需要在CCS中创建一个新的项目,然后配置DSP/BIOS Kernel环境。

接下来,我们可以使用DSP/BIOS中的算法库或者自定义算法实现FIR滤波器。

使用DSP/BIOS的算法库有两种方式,分别是使用C语言和使用Simulink。

如果我们选择使用C语言,可以使用DSPLIB函数库中的fir 函数来实现FIR滤波器。

fir函数需要提供滤波器系数和输入信号,然后它会返回滤波后的输出信号。

例如,以下是使用C语言实现FIR滤波器的示例代码:```C#include <dsplib.h>float x[N]; // 输入信号float b[M]; // 滤波器系数float y[N]; // 输出信号FIR_firGen(M, b); // 生成滤波器系数for (int i = 0; i < N; i++)y[i] = FIR_fir(x[i], b, M); // 滤波```如果我们选择使用Simulink,可以使用Simulink中提供的滤波器模块构建FIR滤波器。

基于matlab的FIR滤波器设计(处理加噪音频,优化设计方法,等波纹)

基于matlab的FIR滤波器设计(处理加噪音频,优化设计方法,等波纹)

基于matlab的FIR滤波器设计(处理加噪音频,优化设计方法,等波纹)一、录制音频二、利用优化设计的低通滤波器处理加有噪声的音频波形f3=7000;%所加噪声正弦函数的频率[Y,fs,bits]=wavread('D:\yinpin\nihao01.wav');%利用wavread产生音频的函数及采样频率L=length(Y);t=0:1/fs:(L-1)/fs;%定义时间的范围及步长y=0.005*sin(2*pi*f3*t);%所加噪声n1=floor(L/2);f1=(0:n1)*fs/L;Y=Y(:,1);sound(Y,fs);%输出加噪前音频Y1=y+Y';%给音频加噪声FY1=abs(fft(Y1,L));FY=abs(fft(Y,L));sound(Y1,fs);%输出加噪后的音频figure(1)subplot(211)plot(t(1:1000),Y(1:1000)); grid on;%加噪前音频的时域图xlabel('时间(t)');ylabel('幅度(Y)');title('加噪前录音波形的时域图');subplot(212)plot(f1,FY(1:n1+1)); grid on;%加噪前音频的频域图title('加噪前录音波形的频域图');figure(2)subplot(211)plot(t(1:1000),Y1(1:1000)); grid on;%加噪后音频的时域图xlabel('时间(t)');ylabel('幅度(Y1)');title('加噪声后录音波形的时域图');subplot(212)plot(f1,FY1(1:n1+1)); grid on;%加噪后音频的频域图xlabel('频率(f)');ylabel('幅度(FY1)');title('加噪声后录音波形的频域图');rp=3; rs=40; %通带波纹及阻带波纹f=[6000 7000];%截止频率a=[1 0];%期望幅度dev=[(10^(rp/20)-1)/(10^(rp/20)+1) 10^(-rs/20)];[n,fo,ao,w]=remezord(f,a,dev,fs); b=remez(n,fo,ao,w); figure(3)freqz(b,1,1024,fs);%滤波器的特性图figure(4)sf=filter(b,1,Y1);%使用filter函数对信号进行滤波Fsf=abs(fft(sf,L));subplot(211)plot(t(1:1000),sf(1:1000));%滤波后音频的时域图grid on;xlabel('时间(t)');ylabel('幅度(sf)');title('滤波后录音波形的时域图');subplot(212)plot(f1,Fsf(1:n1+1));%滤波后音频的频域图grid on;title('滤波后录音波形的频域图');sound(sf,fs);三、运行结果加噪前录音波形的时域图和频域图加噪后录音波形的时域图和频域图等波纹低通滤波器的增益响应滤波后录音波形的时域图和频域图。

基于MATLAB的FIR滤波器语音信号去噪 精品

基于MATLAB的FIR滤波器语音信号去噪 精品

*****************实践教学******************兰州理工大学计算机与通信学院2013年春季学期《信号处理》课程设计题目:基于MATLAB的FIR滤波器语音信号去噪专业班级:姓名:学号:指导教师:成绩:摘要本次课程设计是基于MATLAB的FIR滤波器语音信号去噪,在设计过程中,首先录制一段不少于10秒的语音信号,并对录制的信号进行采样;其次使用MATLAB会出采样后的语音信号的时域波形和频谱图;然后在给原始的语音信号叠加上噪声,并绘出叠加噪前后的时域图及频谱图;再次设计FIR滤波器,针对语音信号的性质选取一种适合的窗函数设计滤波器进行滤波;最后对仿真结果进行分析。

设计出的滤波器可以满足要求。

关键词: FIR滤波器;语音信号;MATLAB仿真目录一 FIR滤波器设计的基本原理 (1)1.1滤波器的相关介绍 (1)1.1.1数字滤波器的概念 (1)1.1.2 IIR和FIR滤波器 (1)1.2利用窗函数法设计FIR滤波器 (1)1.2.1窗函数法设计FIR滤波器的基本思想 (1)1.2.2窗函数法设计FIR滤波器的步骤 (2)1.2.2窗函数法设计FIR滤波器的要求 (2)1.2.3常用窗函数的性质和特点 (3)1.2.4 语音处理中的采样原理 (3)二语音信号去噪实现框图 (5)三详细设计 (7)3.1 信号的采集 (7)3.2 语音信号的读入与打开 (7)3.3 语音信号的FFT变换 (8)3.4含噪信号的合成 (9)3.5 FIR滤波器的设计 (10)3.6 利用FIR滤波器滤波 (11)3.7 结果分析 (14)总结 (15)参考文献 (16)附录 (17)致谢 (21)一 FIR滤波器设计的基本原理1.1滤波器的相关介绍1.1.1数字滤波器的概念数字滤波器(Digital Filter,简称为DF)是指用来对输入信号进行滤波的硬件和软件。

所谓数字滤波器,是指输入、输出均为数字信号,通过一定运算关系改变输入信号所含频率成分的相对比例或者滤除某些频率成分的器件。

基于Matlab的FIR数字滤波器的优化设计

基于Matlab的FIR数字滤波器的优化设计

基于Matlab的FIR数字滤波器的优化设计摘要通过实例介绍了基于Matlab的FIR滤波器的优化设计方法。

3种结果比较发现,在同样阶数下,优化设计可以获得最佳的频率特性和衰耗特性。

关键词数字滤波器;Matlab;FIR;IIR;优化设计数字滤波在数字信号处理中,占有重要的地位。

数字滤波包括FIR 和IIR两种滤波方式,其中FIR滤波具有很多优点,可以在幅度特性随意设计的同时,保证精确、严格的线性相位,滤波稳定,不会出现递归型结构中的极限振荡等不稳定现象,且误差较小,可采用FFT算法实现,因此运算效率高。

设计FIR滤波器常用的方法有窗函数法与频率抽样法,但是这两种方法均不易精确控制通带与阻带的边界频率,所以在实际应用中有一定的局限性。

文中用Matlab语言实现了最佳等波纹FIR滤波器的设计,通过比较显示了它在等波纹方脉冲响应方面的优化特性。

1 FIR滤波器优化设计法Matlab信号工具箱中提供的Remez函数可对数字滤波器进行优化设计,得到的数字滤波器具有等波纹特性,Remez函数实现Parks McClel-lan算法,即采用数字分析中的Remez算法和切比雪夫最佳一致逼近理论来设计,使实际频响拟合期望频率响应最优。

使用Remez算法设计滤波器,首先需根据要求确定滤波器阶数。

利用Remezord函数可以确定滤波器阶数n,归一化的各频带边界频率fo,归一化的各频带幅度值ao,加权系数w,其格式如下:[n,fo,ao,w]=remezord(f,a,dev)。

Remezord输入参数的含义为向量f指定各频带边界频率,在 0~Fs/2之间取值。

向量a指定各频带的幅度响应。

f的长度是length(f)=2×length(a)-2,必须为偶数。

第一频带总是从0开始,最后一个频带到Fs/2结束。

向量dev指定设计出的滤波器和理想滤波器的幅度响应在每个频带的最大允许误差,因此与向量a的长度相等。

2 FIR滤波器设计实例分别使用窗函数法,频率取样,优化设计法,设计一个线性相位的带通滤波器。

(完整版)基于MATLAB的FIR滤波器语音信号去噪

(完整版)基于MATLAB的FIR滤波器语音信号去噪

*****************实践教学******************兰州理工大学计算机与通信学院2013年春季学期《信号处理》课程设计题目:基于MATLAB的FIR滤波器语音信号去噪专业班级:姓名:学号:指导教师:成绩:摘要本次课程设计是基于MATLAB的FIR滤波器语音信号去噪,在设计过程中,首先录制一段不少于10秒的语音信号,并对录制的信号进行采样;其次使用MATLAB会出采样后的语音信号的时域波形和频谱图;然后在给原始的语音信号叠加上噪声,并绘出叠加噪前后的时域图及频谱图;再次设计FIR滤波器,针对语音信号的性质选取一种适合的窗函数设计滤波器进行滤波;最后对仿真结果进行分析。

设计出的滤波器可以满足要求。

关键词: FIR滤波器;语音信号;MATLAB仿真目录一 FIR滤波器设计的基本原理 (1)1.1滤波器的相关介绍 (1)1.1.1数字滤波器的概念 (1)1.1.2 IIR和FIR滤波器 (1)1.2利用窗函数法设计FIR滤波器 (1)1.2.1窗函数法设计FIR滤波器的基本思想 (1)1.2.2窗函数法设计FIR滤波器的步骤 (2)1.2.2窗函数法设计FIR滤波器的要求 (2)1.2.3常用窗函数的性质和特点 (3)1.2.4 语音处理中的采样原理 (3)二语音信号去噪实现框图 (5)三详细设计 (7)3.1 信号的采集 (7)3.2 语音信号的读入与打开 (7)3.3 语音信号的FFT变换 (8)3.4含噪信号的合成 (9)3.5 FIR滤波器的设计 (10)3.6 利用FIR滤波器滤波 (11)3.7 结果分析 (14)总结 (15)参考文献 (16)附录 (17)致谢 (21)一 FIR滤波器设计的基本原理1.1滤波器的相关介绍1.1.1数字滤波器的概念数字滤波器(Digital Filter,简称为DF)是指用来对输入信号进行滤波的硬件和软件。

所谓数字滤波器,是指输入、输出均为数字信号,通过一定运算关系改变输入信号所含频率成分的相对比例或者滤除某些频率成分的器件。

(完整word版)基于matlab的语音信号分析与处理

(完整word版)基于matlab的语音信号分析与处理

基于matlab的语音信号分析与处理摘要:滤波器设计在数字信号处理中占有极其重要的地位,FIR数字滤波器和IIR 滤波器是滤波器设计的重要组成部分。

Matlab功能强大、编程效率高, 特别是Matlab具有信号分析工具箱,不需具备很强的编程能力,就可以很方便地进行信号分析、处理和设计。

基于MATLAB有噪音语音信号处理的设计与实现,综合运用数字信号处理的理论知识对加噪声语音信号进行时域、频域分析和滤波。

使用窗函数法来设计FIR数字滤波器,用巴特沃斯、切比雪夫和双线性变法设计IIR 数字滤波器,并利用MATLAB作为辅助工具完成设计中的计算与图形的绘制。

关键词:数字滤波器;MATLAB;切比雪夫Abstract:Filter design in digital signal processing plays an extremely important role, FIR digital filters and IIR filter is an important part of filter design. Matlab is powerful, programming efficiency, Matlab also has a particular signal analysis toolbox, it need not have strong programming skills can be easily signal analysis, processing and design. MATLAB based on the noise issue speech signal processing design and implementation of digital signal processing integrated use of the theoretical knowledge of the speech signal plus noise, time domain, frequency domain analysis and filtering. The corresponding results obtained through theoretical derivation, and then use MATLAB as a programming tool for computer implementation.Implemented in the design process, using the windowfunction method to design FIR digital filters with Butterworth, Chebyshev and bilinear Reform IIR digital filter design and use of MATLAB as a supplementary tool to complete the calculation and graphic design Drawing.Keywords:digital filter; MATLAB; Chebyshev语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴的学科,是目前发展最为迅速的信息科学研究领域的核心技术之一。

基于MATLAB的FIR滤波器语音信号去噪_毕业设计

基于MATLAB的FIR滤波器语音信号去噪_毕业设计

******************实践教学******************兰州理工大学计算机与通信学院《信号处理》课程设计题目:基于MATLAB的FIR滤波器语音信号去噪摘要随着信息技术的不断发展,现代信号处理正向着数字化发展,研究语音信号的滤波设计也成了现代信息处理的基本内容。

本次课程设计主要内容是基于MATLAB的FIR滤波器语音信号去噪。

主要运用麦克风采集一段语音信号,对其进行了时域分析和频谱分析,分析语音信号的特性,并对语音信号加入了随机噪声,采用凯塞(Kaiser)窗函数法设计了一个FIR低通滤波器,然后对加噪的语音信号进行滤波处理。

最后对滤波前后的语音信号的时域和频域特性进行对比。

关键词:MATLAB;语音信号;FIR滤波器;凯塞(Kaiser)窗目录第一章语音信号采样和滤波器设计的基本原理 (1)1.1语音信号采样的基本原理 (1)1.1.1采样定理 (1)1.1.2采样频率 (1)1.2数字滤波器的基本理论和设计的基本原理 (2)1.2.1数字滤波器的类型 (2)1.2.2窗口设计法 (3)第二章语音信号去噪的总体设计 (6)2.1语音信号去噪的设计流程图 (6)2.2语音信号去噪的设计流程的介绍 (6)第三章语音信号去噪的仿真实现及结果分析 (8)3.1语音信号的采集 (8)3.2加噪语音信号的频谱分析 (9)3.3语音信号的滤波去噪 (10)3.4语音信号去噪的结果分析 (12)总结 (13)参考文献 (14)附录 (15)致谢 (19)| x - x |第一章 语音信号采样和滤波器设计的基本原理1.1 语音信号采样的基本原理现代所应用的计算机所处理和传送的都是数字信号,所以经常要求对模拟信号采样,将其转换为数字信号,然后对其进行计算处理,最后再重建为模拟信号 。

采样在连续时间信号与离散时间信号之间起着至关重要的作用,模拟信号转换为数字信号的关键是确定合适的采样频率,使得既要能够从采样信号中无失真地恢复出原模拟信号,同时又尽量降低采样频率,减少编码数据速率,有利于数据的存储、处理和传输。

基于MATLAB的FIR滤波器语音信号去噪_课程设计

基于MATLAB的FIR滤波器语音信号去噪_课程设计

*****************实践教学******************兰州理工大学计算机与通信学院《信号处理》课程设计题目:基于MATLAB的FIR滤波器语音信号去噪摘要本次课程设计是基于MATLAB的FIR滤波器语音信号去噪,在设计过程中,首先录制一段不少于10秒的语音信号,并对录制的信号进行采样;其次使用MATLAB会出采样后的语音信号的时域波形和频谱图;然后在给原始的语音信号叠加上噪声,并绘出叠加噪前后的时域图及频谱图;再次设计FIR滤波器,针对语音信号的性质选取一种适合的窗函数设计滤波器进行滤波;最后对仿真结果进行分析。

设计出的滤波器可以满足要求。

关键词: FIR滤波器;语音信号;MATLAB仿真目录一 FIR滤波器设计的基本原理 (1)1.1滤波器的相关介绍 (1)1.1.1数字滤波器的概念 (1)1.1.2 IIR和FIR滤波器 (1)1.2利用窗函数法设计FIR滤波器 (1)1.2.1窗函数法设计FIR滤波器的基本思想 (1)1.2.2窗函数法设计FIR滤波器的步骤 (2)1.2.2窗函数法设计FIR滤波器的要求 (2)1.2.3常用窗函数的性质和特点 (3)1.2.4 语音处理中的采样原理 (3)二语音信号去噪实现框图 (5)三详细设计 (7)3.1 信号的采集 (7)3.2 语音信号的读入与打开 (7)3.3 语音信号的FFT变换 (8)3.4含噪信号的合成 (9)3.5 FIR滤波器的设计 (10)3.6 利用FIR滤波器滤波 (11)3.7 结果分析 (14)总结 (15)参考文献 (16)附录 (17)致谢 (21)一 FIR滤波器设计的基本原理1.1滤波器的相关介绍1.1.1数字滤波器的概念数字滤波器(Digital Filter,简称为DF)是指用来对输入信号进行滤波的硬件和软件。

所谓数字滤波器,是指输入、输出均为数字信号,通过一定运算关系改变输入信号所含频率成分的相对比例或者滤除某些频率成分的器件。

用FIR低通滤波器对语音信号进行处理

用FIR低通滤波器对语音信号进行处理

一、实验目的对一段已知的音频进行信号处理,将音频中2500Hz的噪声用低通滤波器滤除。

二、实验思路1.用MATLAB设计滤波器系数,确定滤波器阶数;2.利用CCS设计FIR滤波器,将滤波器系数添加进来;3.用MATLAB将音频wav转换成CCS可以读的输入dat文件;4.将输入dat文件作为输入,经过卷积运算,输出输出dat文件;5.再将输出dat文件用MATLAB还原成语音wav格式。

三、实验步骤1.用MATLAB设计FIR滤波器系数(1)键入fdatool(2)选择lowpass(3)选择FIR滤波器(4)Specify ordor(设计的是65阶)(5)Window选择hamming窗(6)采样频率fs:8000Hz(7)截止频率fc:(2000~2200)设计为2100Hz(8)点击design(9)File、 export、 Mat-file、 export、保存2.用CCS设计FIR滤波器,程序如下:.title "FIR4.asm".mmregs.def _c_int00.bss y,1 ;给y分配一个存储单元xn .usect "xn",66 ;定义xn的缓冲区域a0 .usect "a0",66PA0 .set 0 ;I/O口地址赋值PA1 .set 1.datatable .word -5 ;定义滤波器系数.word 27.word 1.word -35.word 5.word 49.word -17.word -70.word 38.word 94.word -72.word -120.word 123.word 144.word -195.word -160.word 292.word 161.word -416.word -139.word 79.word -777.word 35.word 1039.word -240.word -1408.word 614.word 2014.word -1417.word -3421.word 4282.word 15302.word 15302.word 4282.word -3421.word -1417.word 2014.word 614.word -1408.word -240.word 1039.word 35.word -777.word 79.word 575.word -139.word -416 .word 161 .word 292.word -160.word -195.word 144.word 123.word -120.word -72.word 94.word 38.word -70.word -17.word 49.word 5.word -35.word 1.word -5.text_c_int00: SSBX FRCTSTM #a0,AR1 ;AR1指向a0的首地址RPT #65 ;重复执行下条语句65次MVPD table,*AR1+ ;从table首址重复传递66个数据STM #xn+65,AR3 ;AR3指向x(n-65)STM #a0+65,AR4 ;AR4指向a65STM #66,BK ;循环缓冲区长度BK=5STM #-1,AR0 ;AR0=-1,双操作数减量LD #xn,DPPORTR PA1,@xn ;输入xnSTM #1000h,AR6 ;输出数据缓冲区首址为#1000hSTM #9fffh,AR7 ;循环计算40959个样本点FIR: RPTZ A,#65 ;A清0,共迭代65次MAC *AR3+0%,*AR4+0%,A ;双操作数乘法累加STH A,@y ;保存y(n)PORTW @y,PA0 ;输出y(n);BD FIRPORTR PA1,*AR3+0% ;输入新数据STH A,*AR6+ ;保存y(n)BANZ FIR,*AR7- ;循环40959次end: B end.END3.用MATLAB将音频wav转换成CCS可以读的input.dat文件,程序如下:y=wavread('E:\SpeechAndNosie.wav');%读入wav数据fid=fopen('E:\input.dat','w');%打开input.dat文件(没有就自动创建),获取文件ID fprintf(fid,'1651?1?0?1?0?\n');%写入dat文件的头几个参数fprintf(fid,'0x%x \n',round(y*100)+(y<0)*2^16);%写入音频信号的数据,以16进制显示,负数用补码显示4.将input.dat文件作为输入,经过卷积运算,输出output.dat文件;5.再将output.dat文件用MATLAB还原成语音wav格式,程序如下:fid=fopen('E:\DSPprogram\FIR4\output.dat','rt');%打开output.dat文件,获取文件ID(fid)y=fscanf(fid,'%x \n');%将数据以16进制写入到变量y中y1=(y-(y>2^15)*(2^16))/100;%16进制数转换为小数wavwrite(y1,8000,'E:\DSP program\FIR4\output.wav');%输出output.wav文件四、实验结果1.FIR低通滤波器对语音信号的响应及频谱:可以看到在2500Hz处,滤波器对语音信号的衰减很大2.通过处理后的语音与原始语音进行比较,可以明显的发现声音清晰,没有噪声的干扰。

MATLAB下的FIR滤波器

MATLAB下的FIR滤波器

数字信号处理课程设计基于MATLAB下的FIR滤波器学院信息工程学院专业通信工程学生姓名学号指导教师日期 2010年7月2日一实验目的:1 语音信号的采集。

2 设计滤波器滤波。

3 滤波前后的信号波形、频谱比较、回访语音消息的比较。

4 GUI设计(选作)。

二报告要求:1 题目的意义,所做工作以及系统的主要功能。

2 滤波器的原理。

3 软件设计流程。

4 源程序。

5 各波形图、频谱图。

三实验步骤:1 采集语音信号,用windows自带录音机录制。

T<2s2 对语音信号的采样及频谱分析。

3 噪声的添加:a 录制带噪声的语音信号。

b 产生噪声信号叠加到语音信号。

4设计滤波器。

5对语音信号进行滤波。

6 对滤波前后的波形及频谱进行比较。

7 GUI界面(选作)四、具体实现语音信号的读取在matlab软件平台下,利用wavread函数对语音信号进行采样,记住采样频率和采样点数。

通过使用wavread函数,理解采样频率、采样位数等概念。

wavread函数调用格式y=wavread(file),读取file所规定的wav文件,返回采样值放在向量y 中。

[y,fs,nbits]=wavread(‘C:\Users\Administrator\Desktop\dog.wav’),采样值放在向量y中,fs表示采样频率(hz),nbits表示采样位数。

y=wavread(file,N),读取钱N点的采样值放在向量y中。

y=wavread(file,[N1,N2]),读取从N1到N2点的采样值放在向量y中。

对语音信号“dog.wav”进行采样其程序如下:[y,fs,nbits]=wavread('dog.wav')结果如下:可知该语音信号的采样频率fs =11025Hz ,数据位nbits = 8Bit。

语音信号的频谱分析首先画出语音信号的时域波形,然后对语音信号进行频谱分析。

在Matlab 中可以利用函数fft 对信号行快速傅里叶变换,得到信号的频谱图其程序如下:y=wavread('C:\Users\Administrator\Desktop\dog.wav');sound(y,fs,nbits); %对加载的语音信号进行回放Y=fft(y); %快速傅里叶变换subplot(2 ,1 ,1),plot(y);title('原始信号波形');subplot(2 ,1 ,2),plot(abs(Y));title('原始信号频谱');程序结果如下图3:噪声信号的构建程序如下:N=length(y); %求出语音信号的长度noise=randn(N,1)/20; %噪声信号的函数z=fft(noise); %快速傅里叶变换subplot(2 ,1 ,1),plot(noise);title('噪声信号波形');subplot(2 ,1 ,2),plot(abs(z));title('噪声信号频谱');sound(noise)加入噪声的语音信号的频谱matlab程序如下:y=wavread('C:\Users\Administrator\Desktop\dog.wav'); N=length(y);k=y+noise; %噪声信号的叠加subplot(2,1,1);plot(k);title ('滤波前的时域波形');K=fft(k);subplot(2,1,2);plot(abs(K));title ('滤波前的频域波形');sound(k)滤波器的设计Ft=11025;Fp=1600;Fs=3000;wp=2*Fp/Ft;ws=2*Fs/Ft;Ap=1;As=50;p=1-10.^(-Ap/20);s=10.^(-As/20);fpts=[wp ws];mag=[1 0];dev=[p s];[N ,wc,beta,ftype]=kaiserord(fpts,mag,dev); b=fir1(N,wc,kaiser(N+1,beta));[h,w]=freqz(b,1);plot(w/pi,abs(h));title('FIR低通滤波器');grid;FIR低通滤波:y=wavread('C:\Users\Administrator\Desktop\dog.wav');N=length(y);noise=rand(N,1)/20;k=y+noise;subplot(2,2,1);plot(k);title ('滤波前的时域波形');K=fft(k);subplot(2,2,2);plot(abs(K));title ('滤波前的频域波形');Ft=11025;Fp=1600;Fs=3000;wp=2*Fp/Ft;ws=2*Fs/Ft;Ap=1;As=50;p=1-10.^(-Ap/20);s=10.^(-As/20);fpts=[wp ws];mag=[1 0];dev=[p s];[N ,wc,beta,ftype]=kaiserord(fpts,mag,dev);b=fir1(N,wc,kaiser(N+1,beta));[h,w]=freqz(b,1);z21=fftfilt(b,k);m21=fft(z21);subplot(2,1,1);plot(z21,'g');subplot(2,1,2);plot(abs(m21),'r');sound(z21,11025)五.课程设计总结:通过本次课程设计,使我们对数字信号处理相关知识有了更深刻的理解,尤其是对FIR低通滤波器的设计。

基于Matlab的语音信号滤波器的设计与实现

基于Matlab的语音信号滤波器的设计与实现

0 -2.5
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
2.5 x 10
4
仿真结果输出及结论
• 滤波后的输出波形明显在对应时间幅度比原语音加噪声信号的要小,
而且滤波的效果也与滤波器的选择有关,可以看出滤波器的性能差 异以及参数的调节会对滤波器产生一定的影响,并且通过回放可以 发现滤波前后的声音有变化.低通滤波后,已很接近原来的声音,人耳 几乎辨别不出 。从频谱图中我们还可以看出声音的能量信号主要集 中在低频部分,说明高频语音信号被滤出,滤波器达到既定要求。
0 0.5 1 1.5 2 2.5 x 10
4
4 2 0
10 5 0
0
0.5
1 Hz
1.5
2
2.5 x 10
4
FIR带 通 滤 波 器 的 频 率 响 应
FIR低 通 滤 波 器 的 频 率 响 应 100
100
Magnitude (dB)
Magnitude (dB)
0
0
-100
-100
-200
-200
计滤波器对其进行滤波处理,对话音信号加噪声前后的频谱进行比 较分析,对合成语音信号滤波前后进行频谱的分析比较。
设计仿真过程
• 设计流程框图 • 滤波器的技术指标 • 设计源程序
流 程 框 图
原始信号时域波形图 1
1 加噪前的信号
0.5
0.5
fuzhi n
0 x 10
4
0 -0.5 -1
0 -0.5
-200
-2
0 x 10
4
2
4
6
8
10

基于MATLAB与CCS的FIR滤波器的C语言实现

基于MATLAB与CCS的FIR滤波器的C语言实现

基于MATLAB与CCS的FIR滤波器的C语言实现FIR(Finite Impulse Response)滤波器是一种数字滤波器,其输出仅取决于有限长度的输入序列。

MATLAB和CCS都提供了强大的工具和函数来设计和实现FIR滤波器。

下面将以一个具体的例子来介绍如何使用MATLAB和CCS来实现FIR滤波器的C语言实现。

首先,在MATLAB中使用fir1函数进行FIR滤波器的设计:```matlabfs = 1000; % 采样频率fpass = 200; % 通带截止频率fstop = 250; % 阻带起始频率Rp=1;%通带最大纹波(dB)Rs=60;%阻带最小衰减(dB)%计算通带和阻带频率f1 = fpass / (fs / 2);f2 = fstop / (fs / 2);% 使用fir1函数设计FIR滤波器b = fir1(30, [f1 f2], 'stop', kaiser(31, 3));%输出滤波器系数```然后,使用MATLAB中的codegen函数将FIR滤波器系数转换为C代码:```matlabcodegen -config:dll FIRFilter -args {b} -report```这将生成一个名为FIRFilter.c的文件,在该文件中包含了FIR滤波器的C语言实现。

接下来,在CCS中创建一个新的project,并将FIRFilter.c文件添加到该project中。

在Source Files文件夹中右键单击,并选择“Add Existing Files to Project”,然后选择FIRFilter.c文件。

接着,点击Build按钮来编译并生成可执行文件。

最后,在CCS中使用FIR滤波器的C语言实现进行信号处理。

可以通过以下代码示例来实现:```c#include <stdint.h>#include "FIRFilter.h"#define BUFFER_SIZE 1000//输入信号int16_t inputSignal[BUFFER_SIZE];//输出信号int16_t outputSignal[BUFFER_SIZE];int main(void)//初始化输入信号//...//调用FIR滤波器实现函数FIRFilter(inputSignal, outputSignal, BUFFER_SIZE);//处理输出信号//...return 0;```上述代码中,首先定义了输入和输出信号的数组,然后在main函数中调用FIR滤波器实现函数,并传入输入和输出信号的数组以及信号的长度。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录1 绪论 (2)2课程设计的具体实现 (4)2.1 语音信号的录制 (4)2.2 FIR滤波器的设计方法 (4)3语音信号的时频分析 (5)3.1语音信号载入MATLAB (5)3.2语音信号时域和频域分析 (6)3.3设计FIR数字滤波器 (7)3.3.1 窗函数hamming设计带通滤波器 (8)3.3.2 窗函数hanning设计带通滤波器 (9)3.3.3 窗函数Blackman设计带通滤波器 (10)3.3.4 窗函数Boxcar设计带通滤波器 (11)3.4滤波之后的时域和频域分析 (12)3.4.1 窗函数hamming设计带通滤波器滤波 (13)3.4.2 窗函数hanning设计带通滤波器滤波 (13)3.4.3 窗函数Blackman设计带通滤波器滤波 (14)3.4.4 窗函数Boxcar设计带通滤波器滤波 (15)3.5回放语音信号 (16)结论 (16)参考文献 (18)1 绪论数字信号处理是利用计算机或专用处理设备,以数值计算的方法对信号进行采集、抽样、变换、综合、估值与识别等加工处理,借以达到提取信息和便于应用的目的。

它在语音、雷达、图像、系统控制、通信、航空航天、生物医学等众多领域都获得了极其广泛的应用。

具有灵活、精确、抗干扰强、设备尺寸小、造价低、速度快等优点。

数字滤波器, 是数字信号处理中及其重要的一部分。

随着信息时代和数字技术的发展,受到人们越来越多的重视。

数字滤波器可以通过数值运算实现滤波,所以数字滤波器处理精度高、稳定、体积小、重量轻、灵活不存在阻抗匹配问题,可以实现模拟滤波器无法实现的特殊功能。

数字滤波器种类很多,根据其实现的网络结构或者其冲激响应函数的时域特性,可分为两种,即有限冲激响应( FIR,Finite Impulse Response)滤波器和无限冲激响应( IIR,Infinite Impulse Response)滤波器。

FIR滤波器结构上主要是非递归结构,没有输出到输入的反馈,系统函数H (z)在处收敛,极点全部在z = 0处(因果系统),因而只能用较高的阶数达到高的选择性。

FIR数字滤波器的幅频特性精度较之于IIR数字滤波器低,但是线性相位,就是不同频率分量的信号经过fir滤波器后他们的时间差不变,这是很好的性质。

FIR数字滤波器是有限的单位响应也有利于对数字信号的处理,便于编程,用于计算的时延也小,这对实时的信号处理很重要。

FIR滤波器因具有系统稳定,易实现相位控制,允许设计多通带(或多阻带)滤波器等优点收到人们的青睐。

IIR滤波器采用递归型结构,即结构上带有反馈环路。

IIR滤波器运算结构通常由延时、乘以系数和相加等基本运算组成,可以组合成直接型、正准型、级联型、并联型四种结构形式,都具有反馈回路。

同时,IIR数字滤波器在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,在设计一个IIR数字滤波器时,我们根据指标先写出模拟滤波器的公式,然后通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。

滤波器的设计可以通过软件或设计专用的硬件两种方式来实现。

随着MATLAB软件及信号处理工具箱的不断完善,MATLAB很快成为应用学科等领域不可或缺的基础软件。

它可以快速有效地实现数字滤波器的设计、分析和仿真,极减轻了工作量,有利于滤波器设计的最优化。

2课程设计的具体实现2.1 语音信号的录制声音格式有很多种类,而MATLAB能够识别的有两种:*.wav和*au。

利用不同方式录制的音频文件格式不正确时,需要利用专门的软件处理。

一种简便的方法是利用“千千静听”播放器进行格式转换。

利用PC 机上的声卡和WINDOWS 操作系统可以进行数字信号的采集。

将话筒输入计算机的语音输入插口上,启动录音机。

按下录音按钮,接着对话筒说话“电子信息工程”,说完后停止录音,屏幕左侧将显示所录声音的长度。

点击放音按钮,可以实现所录音的重现。

以文件名“fengxiao”。

可以看到,文件存储器的后缀默认为. wav ,这是WINDOWS 操作系统规定的声音文件存的标准,以下以wav格式进行。

2.2 FIR滤波器的设计方法FIR滤波器的设计方法有许多种,如窗函数设计法、频率采样设计法和最优化设计法等。

窗函数设计法的基本原理是用一定宽度窗函数截取无限脉冲响应序列获得有限长的脉冲响应序列,主要设计步骤为:(1) 通过傅里叶逆变换获得理想滤波器的单位脉冲响应hd(n)。

(2) 由性能指标确定窗函数W(n)和窗口长度N。

(3) 求得实际滤波器的单位脉冲响应h(n), h(n)即为所设计FIR滤波器系数向量b(n)。

(4) 检验滤波器性能。

根据滤波前后的时域和频域波形,比较去噪性能。

3语音信号的时频分析3.1语音信号载入MATLAB利用MATLAB中的“wavread”命令来读入(采集)语音信号,将它赋值给某一向量。

再对其进行采样,记住采样频率和采样点数。

Wavread的函数调用格式为:[y,fs,nbits]=wavered (‘wav文件的存放路径’);%把语音信号加载入Matlab 仿真软件平台中,并返回采样频率fs。

3.2语音信号时域和频域分析时域波形用plot(y)就可以画出。

MATLAB提供了快速傅里叶变换算法FFT计算DFT的函数fft,其调用格式如下:Xk=fft(xn,N)参数xn为被变换的时域序列向量,N是DFT变换区间长度,当N大于xn的长度时,fft函数自动在xn后面补零。

,当N小于xn的长度时,fft函数计算xn的前N个元素,忽略其后面的元素。

在本次设计中,我们利用fft对语音信号进行快速傅里叶变换,就可以得到信号的频谱特性。

其程序如下:clc;clear all;[x1,Fs,bits]=wavread('F:\学习\新建文件夹\2.wav');sound(x1,Fs); figure(1);subplot(2,1,1);plot(x1); %做原始语音信号的时域图形title('原始语音信号时域波形');xlabel('time n');ylabel('yinliang n');axis([0,200000,-0.4,0.4]);y1=fft(x1); %做length(x1)点的FFTy1=fftshift(y1);%平移,是频率中心为0derta_Fs = Fs/length(x1);%设置频谱的间隔,分辨率subplot(2,1,2);plot([-Fs/2:derta_Fs: Fs/2-derta_Fs],abs(y1));%画出原始语音信号的频谱图title('原始语音信号的频谱');axis([-25000,25000,0,400]);grid on; 波形为:3.3设计FIR数字滤波器根据语音信号的频谱特点,大致在300~3400之间,因此考虑用带通滤波器对噪声部分进行过滤。

MATLAB中设计FIR滤波器的方法有窗函数法、多带方法、最小二乘法、任意响应法、余弦法等。

本设计从比较熟知的窗函数法入手,通过不同窗函数的分析和比较进行编程。

h(n)=hd(n)w(n)W(n)所加的窗函数,通过上式将理想滤波器变为物理可实现的滤波器。

MATLAB中提供的窗函数有矩形窗、汉明窗、汉宁窗、Blackman窗、三角窗、Kaiser窗等。

各种窗函数都有明显的主瓣和旁瓣,主瓣和旁瓣的幅值衰减决定了窗函数的应用场合。

矩形窗具有最窄的主瓣,但也具有最大的旁瓣峰值;Blackman窗具有最大的旁瓣衰减,但也具有最宽的主瓣宽度。

不同的窗函数在这两方面的特点不同,因此应根据具体的问题进行选择。

通常来讲,哈明窗和汉宁窗的主瓣具有较小的旁瓣和较大的衰减速度,是较为常用的窗函数。

3.3.1 窗函数hamming设计带通滤波器以下是基于窗函数hamming带通滤波器:f1=500;f2=4000; %带通滤波器的通带围w1=2*pi*f1/Fs;w2=2*pi*f2/Fs;w=[w1,w2];N3=ceil(4*pi/(2*pi*200/Fs)); %计算滤波器的阶数b3=FIR1(N3,w/pi,'DC-0'); %设计FIR带通滤波器figure(2);freqz(b3,1,512);%数字滤波器频率响应title('带通滤波器的频率响应');3.3.2 窗函数hanning设计带通滤波器以下是基于窗函数hanning的带通滤波器f1=100;f2=2000; %带通滤波器的通带围w1=2*pi*f1/Fs;w2=2*pi*f2/Fs; w=[w1,w2];N=ceil(4*pi/(2*pi*200/Fs));Nw=N;Windows=HANNING(N) ;b3=FIR1(N,w, Windows);%带通滤波器figure(2);freqz(b3,1,512);%数字滤波器频率响应title('带通滤波器的频率响应');3.3.3 窗函数Blackman设计带通滤波器以下是带通滤波器1(基于窗函数Blackman)f1=100;f2=2000; %带通滤波器的通带围w1=2*pi*f1/Fs;w2=2*pi*f2/Fs;w=[w1,w2];N=ceil(4*pi/(2*pi*200/Fs));Nw=N;Windows=BLACKMAN(N+1) ;b3=FIR1(N,w,Windows);%带通滤波器figure(2);freqz(b3,1,512);%数字滤波器频率响应title('带通滤波器的频率响应');3.3.4 窗函数Boxcar设计带通滤波器以下是基于窗函数Kaiser的带通滤波器f1=200;f2=3400; %带通滤波器的通带围w1=2*pi*f1/Fs;w2=2*pi*f2/Fs;w=[w1,w2];N=ceil(4*pi/(2*pi*200/Fs));Nw=N;Windows=BOXCAR(N+1) ;b3=FIR1(N,w,Windows);%带通滤波器figure(2);freqz(b3,1,512);%数字滤波器频率响应title('带通滤波器的频率响应');3.4滤波之后的时域和频域分析x1_daitong = filter(b3,1,x1);%对信号进行带通滤波。

3.4.1 窗函数hamming设计带通滤波器滤波滤波后的波形为:1、利用haimming窗设计的FIR滤波器滤波后:3.4.2 窗函数hanning设计带通滤波器滤波利用hainning窗设计的FIR滤波器滤波后:3.4.3 窗函数Blackman设计带通滤波器滤波利用Blackman窗设计的FIR滤波器滤波后:3.4.4 窗函数Boxcar设计带通滤波器滤波利用窗设计的FIR滤波器滤波后:3.5回放语音信号经过以上的加噪声处理后,可在Matlab中用函数sound对声音进行回放。

相关文档
最新文档