当前位置:文档之家› 唐山学院MATLAB合成信号,语音信号数字滤波器设计

唐山学院MATLAB合成信号,语音信号数字滤波器设计

唐山学院MATLAB合成信号,语音信号数字滤波器设计
唐山学院MATLAB合成信号,语音信号数字滤波器设计

目录

1引言 (1)

2设计总体方案 (2)

2.1设计要求 (2)

2.2设计总体方案 (2)

2.3设计内容 (2)

2.4设计原理 (2)

3语音信号的具体实现 (4)

3.1 语音信号的采集 (4)

3.2语音信号的时域分析 (4)

3.3 语音信号加噪与频谱分析 (5)

3.4 设计FIR和IIR数字滤波器 (6)

3.5 用滤波器对加噪语音信号进行滤波 (10)

3.6 比较滤波前后语音信号的波形及频谱 (10)

4合成信号的具体实现 (14)

4.1合成信号的产生原理 (14)

4.2调试分析 (14)

4.2.1混合信号分析 (14)

4.2.2三种滤波器设计 (14)

5 MATLAB GUI的简介 (17)

5.1 MATLAB软件介绍 (17)

5.2 MATLAB常用函数简介 (18)

5.3设计系统界面 (18)

5.3.1 系统界面设计工具—GUI概述 (18)

5.3.2 界面设计及使用说明 (18)

6心得体会 (21)

参考文献 (22)

附录 (23)

1引言

随着信息时代、数字世界的到来,数字信号处理已成为一门极其重要的学科和技术领域。数字信号处理是将信号以数字方式表示并处理的理论和技术,处理的内容包括对数字信号的滤波、变换、频谱分析、检测、估计、压缩、识别等一系列的加工处理。由于大规模集成电路以及数字计算机的飞速发展,加之从60年代末以来数字信号处理理论和技术的成熟和完善,用数字方法来处理信号,即数字信号处理,已逐渐取代模拟信号处理。

数字信号处理技术的应用领域非常广泛,主要包括语音信号处理,图像处理,语音电话(V oIP),移动通信,数字通信网络,数码相机,汽车电子,医疗,军事等领域。其中语音信号处理是数字信号处理中一个很重要的领域。语音信号是基于时间轴上的数字信号,这里我们主要讨论对语音信号进行频域上的分析。在信号分析中,频域往往包含了更多的信息。数字信号处理是利用计算机或专用处理设备,以数值计算的方法对信号进行采集、抽样、变换、综合、估值与识别等加工处理,借以达到提取信息和便于应用的目的。它在语音、雷达、图像、系统控制、通信、航空航天、生物医学等众多领域都获得了极其广泛的应用。具有灵活、精确、抗干扰强、设备尺寸小、造价低、速度快等优点。

滤波器设计在数字信号处理中占有极其重要的地位,FIR数字滤波器和IIR滤波器是滤波器设计的重要组成部分。利用MATLAB信号处理工具箱可以快速有效地设计各种数字滤波器。课题基于MATLAB有噪音语音信号处理的设计与实现,综合运用数字信号处理的理论知识对加噪声语音信号进行时域、频域分析和滤波。通过理论推导得出相应结论,再利用MATLAB 作为编程工具进行计算机实现。在设计实现的过程中,使用窗函数法来设计FIR数字滤波器,用巴特沃斯、切比雪夫和双线性变法设计IIR数字滤波器,并利用MATLAB 作为辅助工具完成设计中的计算与图形的绘制。通过对对所设计滤波器的仿真和频率特性分析,可知利用MATLAB信号处理工具箱可以有效快捷地设计FIR 和IIR数字滤波器,过程简单方便,结果的各项性能指标均达到指定要求。

数字滤波器是一种对数字信号进行处理的系统,数字滤波器完成数字信号滤波处理功能,其输入是一组数字量,其输出是经过变换的另一组数字量。它通过一定的运算关系或电路形式来改变输入信号所包含的频率成分的相对比例或滤出某些频率成分,数字滤波器具有稳定性高、精度高、灵活性大等优点。随着数字技术的发展,用数字技术实现滤波器的功能越来越受到人们的注意和广泛的应用。

2设计总体方案

2.1设计要求

1.设计低通、带通、高通数字滤波器;

2.可以对合成信号(含低频、中频、高频分量)、语音信号进行滤波;

3.通过GUI界面进行控制。

2.2设计总体方案

掌握用双线性变换法设计IIR数字滤波器及用窗函数法设计FIR数字滤波器的具体设计方法和原理,观察设计的数字滤波器的幅频特性,了解双线性变换法和窗函数法设计数字滤波器时的特点。

2.3设计内容

选择一个语音信号作为分析的对象,或录制一段各人自己的语音信号,对其进行频谱分析;利用MATLAB中的随机函数产生噪声加入到语音信号中,模仿语音信号被污染,并对其进行频谱分析;设计FIR和IIR数字滤波器,并对被噪声污染的语音信号进行滤波,分析滤波后信号的时域和频域特征,回放语音信号;最后,设计一个信号处理系统界面。在所设计的系统界面上可以选择滤波器的类型。

2.4设计原理

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

利用模拟滤波器来设计IIR数字滤波器是最常见的方法,其设计过程是按照技术要求设计模拟滤波器,得到其系统函数Ha(s),然后经过一定的变换,得到满足要求的数字滤波器的H(z)。这种设计方法的优点是模拟滤波器的设计理论很成熟,有很多现成的公式、表格、图形和曲线可以直接使用,从而使IIR数字滤波器的设计变得很简单。

常用的IIR滤波器设计方法主要有以下几种:

1. 以模拟滤波器函数为基础的变换法:即先设计一满足指定条件的模拟滤波器H(s),再将该模拟滤波器转化为数字滤波器H(z)。

2. 直接设计法:在z平面内,根据零、极点对系统特性的影响,调整零极点位置得H(z)。

3. 最优化设计法(计算机辅助设计):在某种最小化误差准则下,建立差分方程系数Ak、Bk对理想特性的逼近方程,使用迭代方法解方程组得到最佳逼近系统。由于此方法计算量大,需要借助于计算机进行设计。

在此主要介绍由模拟滤波器转换为数字滤波器的设计方法。

IIR滤波器的最大缺点是不容易实现线性相位,而在语音、图像、数据通信等系统普

遍要求数字滤波器具有线性相位特性,FIR滤波器正是因为具有线性相位特性而获得广泛的应用。另外,H(z)永远稳定,这也是FIR滤波器的另一个突出优点。

它的通频带在f1~f2之间。它使信号中高于f1而低于f2的频率成分可以不受衰减地通过,而其它成分受到衰减。

不同类型(高通、低通和带通)滤波器对应的Wp和Ws值遵循以下规则:

a.高通滤波器:Wp和Ws为一元矢量且Wp>Ws;

b.低通滤波器:Wp和Ws为一元矢量且Wp

c.带通滤波器:Wp和Ws为二元矢量且Wp

3语音信号的具体实现

3.1 语音信号的采集

利用PC 机上的声卡和WINDOWS 操作系统可以进行数字信号的采集。将话筒输入计算机的语音输入插口上,启动录音机。按下录音按钮,接着对话筒说话“语音信号处理”,说完后停止录音,屏幕左侧将显示所录声音的长度。点击放音按钮,可以实现所录音的重现。以文件名“speech”保存入g :\ MATLAB \ work 中。可以看到,文件存储器的后缀默认为. wav ,这是WINDOWS 操作系统规定的声音文件存的标准。

3.2语音信号的时域分析

利用MATLAB中的“wavread”命令来读入(采集)语音信号,将它赋值给某一向量。再对其进行采样,记住采样频率和采样点数。下面介绍Wavread 函数几种调用格式。

1.y=wavread(file)

功能说明:读取file所规定的wav文件,返回采样值放在向量y中。

2.[y,fs,nbits]=wavread(file)

功能说明:采样值放在向量y中,fs表示采样频率(hz),nbits表示采样位数。

3.y=wavread(file,N)

功能说明:读取钱N点的采样值放在向量y中。

4.y=wavread(file,[N1,N2])

功能说明:读取从N1到N2点的采样值放在向量y中。

对语音信号OriSound.wav进行采样。其程序如下:

[y,fs,nbits]=wavered (‘I:\1.wav’); %把语音信号加载入Matlab 仿真软件平台中

然后,画出语音信号的时域波形,再对语音信号进行频谱分析。MATLAB提供了快速傅里叶变换算法FFT计算DFT的函数fft,其调用格式如下:

Xk=fft(y,N)

参数y为被变换的时域序列向量,N是DFT变换区间长度,当N大于y的长度时,fft函数自动在y后面补零。,当N小于y的长度时,fft函数计算y的前N个元素,忽略其后面的元素。

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

ound(y,fs,nbits); %回放语音信号

N= length (y) ; %求出语音信号的长度

Y=fft([y,fs,nbits]=wavread (' I:\1.wav ');

s y,N); %傅里叶变换

Axes(handles.axes1);

plot(y);title('原始信号波形');

plot(abs(Y));

title('原始信号频谱');

程序结果如下图3.1:

图3.1原始信号波形及频谱

3.3 语音信号加噪与频谱分析

MATLAB中产生高斯白噪声非常方便,有两个产生高斯白噪声的两个函数。我们可以直接应用两个函数:一个是WGN,另一个是AWGN。WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声。也可直接用randn函数产生高斯分布序列。

在本次课程设计中,我们是利用MATLAB中的随机函数(rand或randn)产生噪声加入到语音信号中,模仿语音信号被污染,并对其频谱分析。Randn函数有两种基本调用格式:Randn(n)和Randn(m,n),前者产生n×n服从标准高斯分布的随机数矩阵,后者产生m×n的随机数矩阵。在这里,我们选用Randn(m,n)函数。语音信号添加噪声及其频谱分析的主要程序如下:

[y,fs,nbits]=wavread ('E:\ppp.wav');

sound(y,fs,nbits); %回放语音信号

N= length (y) ; %求出语音信号的长度

Y=fft(y,N); %傅里叶变换

subplot(2,1,1);

plot(y);title('原始信号波形');

subplot(2,1,2);

plot(abs(Y));

title('原始信号频谱');

程序结果如下图3.2所示:

图3.2语音信号频谱分析

3.4 设计FIR和IIR数字滤波器

IIR滤波器和FIR滤波器的设计方法完全不同。IIR滤波器设计方法有间接法和直接法,间接法是借助于模拟滤波器的设计方法进行的。其设计步骤是:先设计过渡模拟滤波器得到系统函数H(s),然后将H(s)按某种方法转换成数字滤波器的系统函数H(z)。FIR滤波器比鞥采用间接法,常用的方法有窗函数法、频率采样发和切比雪夫等波纹逼近法。对于线性相位滤波器,经常采用FIR滤波器。

对于数字高通、带通滤波器的设计,通用方法为双线性变换法。可以借助于模拟滤波器的频率转换设计一个所需类型的过渡模拟滤波器,

(1)过双线性变换将其转换策划那个所需的数字滤波器。具体设计步骤如下:

1.确定所需类型数字滤波器的技术指标。

2.将所需类型数字滤波器的边界频率转换成相应的模拟滤波器的边界频率,转换公式为Ω=2/T tan(0.5ω)

3. 将相应类型的模拟滤波器技术指标转换成模拟低通滤波器技术指标。

4.设计模拟低通滤波器。

5.通过频率变换将模拟低通转换成相应类型的过渡模拟滤波器。

6.采用双线性变换法将相应类型的过渡模拟滤波器转换成所需类型的数字滤波器。

脉冲响应不变法的主要缺点是会产生频谱混叠现象,使数字滤波器的频响偏离模拟滤波器的频响特性。为了克服之一缺点,可以采用双线性变换法。利用模拟滤波器设计IIR数字低通滤波器的步骤:

1.确定数字低通滤波器的技术指标:通带边界频率、通带最大衰减,阻带截止频率、阻带最小衰减。

2.将数字低通滤波器的技术指标转换成相应的模拟低通滤波器的技术指标。

3.按照模拟低通滤波器的技术指标设计及过渡模拟低通滤波器。

4.用双线性变换法,模拟滤波器系统函数转换成数字低通滤波器系统函数。

(2)如前所述,IIR滤波器和FIR滤波器的设计方法有很大的区别。下面我们着重介绍用窗函数法设计FIR滤波器的步骤。如下:

1.根据对阻带衰减及过渡带的指标要求,选择串窗数类型(矩形窗、三角窗、汉宁窗、哈明窗、凯塞窗等),并估计窗口长度N。先按照阻带衰减选择窗函数类型。原则是在保证阻带衰减满足要求的情况下,尽量选择主瓣的窗函数。

2.构造希望逼近的频率响应函数。

3.计算h(n).。

4.加窗得到设计结果。

我们根据语音信号的特点给出有关滤波器的技术指标:

①低通滤波器的性能指标:

fp=1000Hz,fs=1200Hz,As=100db ,Ap=1dB

②高通滤波器的性能指标:

fp=4000Hz,fs=3500Hz,As=100dB,Ap=1dB;

③带通滤波器的性能指标:

fp1=1200Hz,fp2=3000hZ,fs1=1000Hz,fs2=3200Hz,As=100dB,Ap=1dB

在Matlab中,可以利用函数fir1设计FIR滤波器,利用函数butter,cheby1和ellip设计IIR滤波器,利用Matlab中的函数freqz画出各步步器的频率响应。

hn=fir1(M,wc,window),可以指定窗函数向量window。如果缺省window参数,则fir1默认为哈明窗。其中可选的窗函数有Rectangular Barlrtt Hamming Hann Blackman 窗,其相应的都有实现函数。

MATLAB信号处理工具箱函数buttp buttor butter是巴特沃斯滤波器设计函数,其有5种调用格式,本课程设计中用到的是[N,wc]=butter(N,wc,Rp,As,’s’),该格式用于计算巴特沃斯模拟滤波器的阶数N和3dB截止频率wc。

MATLAB信号处理工具箱函数cheblap,cheblord和cheeby1是切比雪夫I型滤波器设计函数。我们用到的是cheeby1函数,其调用格式如下:

[B,A]=cheby1(N,Rp,wpo,’ftypr’)

[B,A]=cheby1(N,Rp,wpo,’ftypr’,’s’)

函数butter,cheby1和ellip设计IIR滤波器时都是默认的双线性变换法,所以在设计滤波器时只需要代入相应的实现函数即可。下面我们将给出FIR和IIR数字滤波器的主要程序。

%=========================IIR低通滤波器=======================

Ft=4000;

Fp=1000;

Fs=2000;

wp=2*pi*Fp/Ft;

ws=2*pi*Fs/Ft;

fp=2*Fp*tan(wp/2);

fs=2*Fs*tan(wp/2);

[n11,wn11]=buttord(wp,ws,1,50,'s'); %求低通滤波器的阶数和截止频率

[b11,a11]=butter(n11,wn11,'s'); %求S域的频率响应的参数

[num11,den11]=bilinear(b11,a11,0.5); %双线性变换实现S域到Z域的变换[h,w]=freqz(num11,den11); %根据参数求出频率响应

plot(w*8000*0.5/pi,abs(h));

legend('用butter设计');

利用上述程序用巴特沃兹设计的低通滤波器如下图3.3所示:

图3.3 IIR低通滤波器

%======================IIR带通========================== wp1=tan(pi*Fp1/Ft); %带通到低通滤波器的转换

wp2=tan(pi*Fp2/Ft);

ws1=tan(pi*Fs1/Ft);

ws2=tan(pi*Fs2/Ft);

w=wp1*wp2/ws2;

bw=wp2-wp1;

wp=1;

ws=(wp1*wp2-w.^2)/(bw*w);

[n12,wn12]=buttord(wp,ws,1,50,'s'); %求低通滤波器阶数和截止频率[b12,a12]=butter(n12,wn12,'s'); %求S域的频率响应参数

[num2,den2]=lp2bp(b12,a12,sqrt(wp1*wp2),bw);%将S域低通参数转为带通的

[num12,den12]=bilinear(num2,den2,0.5);%双线性变换实现S域到Z域的转换[h,w]=freqz(num12,den12); %根据参数求出频率响应plot(w*8000*0.5/pi,abs(h));

axis([0 4000 0 1.5]);

legend('用butter设计');

利用上述程序用巴特沃兹设计的带通滤波器如下图3.4所示:

图3.4IIR带通滤波器

%======================IIR高通========================== Ft=8000;

Fp=4000;

Fs=3500;

wp1=tan(pi*Fp/Ft); %高通到低通滤波器参数转换

ws1=tan(pi*Fs/Ft);

wp=1;

ws=wp1*wp/ws1;

[n13,wn13]=cheb1ord(wp,ws,1,50,'s'); %求模拟的低通滤波器阶数和截止频率[b13,a13]=cheby1(n13,1,wn13,'s'); %求S域的频率响应的参数

[num,den]=lp2hp(b13,a13,wn13); %将S域低通参数转为高通的

[num13,den13]=bilinear(num,den,0.5); %利用双线性变换实现S域到Z域转换[h,w]=freqz(num13,den13);

plot(w*21000*0.5/pi,abs(h));

title('IIR高通滤波器');

legend('用cheby1设计');

利用上述程序用切比雪夫设计的高通滤波器如下图3.5所示:

图3.5IIR高通滤波器

3.5 用滤波器对加噪语音信号进行滤波

用自己设计的各滤波器分别对加噪的语音信号进行滤波,在Matlab中,FIR滤波器利用函数fftfilt对信号进行滤波,IIR滤波器利用函数filter对信号进行滤波。

函数fftfilt用的是重叠相加法实现线性卷积的计算。调用格式为:y=fftfilter(h,x,M)。其中,h是系统单位冲击响应向量;x是输入序列向量;y是系统的输出序列向量;M是有用户选择的输入序列的分段长度,缺省时,默认的输入向量的重长度M=512。

函数filter的调用格式:yn=filter(B,A.xn),它是按照直线型结构实现对xn的滤波。其中xn是输入信号向量,yn输出信号向量。

3.6 比较滤波前后语音信号的波形及频谱

%======================IIR低通滤波器========================== [y,fs,nbits]=wavread ('D:/1.wav');

n = length (y) ; %求出语音信号的长度

s=y;

S=fft(s); %傅里叶变换

z11=filter(num11,den11,s);

sound(z11);

m11=fft(z11); %求滤波后的信号

subplot(2,2,1);

plot(abs(S),'g');

title('滤波前信号的频谱');

grid;

subplot(2,2,2);

title('滤波后信号的频谱');

grid;

subplot(2,2,3);

plot(s);

title('滤波前信号的波形');

grid;

subplot(2,2,4);

上面设计出的三种滤波器均可满足设计指标:在f<3000Hzz 的通带内最大衰减1p A dB =,在f>0Hz 的阻带内最小衰减10s A dB =。比较三种滤波器的幅频特性可以看出巴特沃斯滤波器在阻带内有更好的衰减特性,故IIR 低通滤波器选择巴特沃斯型滤波器。在GUI 界面的显示波形如下图3.6所示:

图3.6 IIR 低通语音信号频谱波形图

% ======================IIR 带通滤波器=======================

[y,fs,nbits]=wavread ('D:/1.wav');

n = length (y) ; %求出语音信号的长度

s=y;

S=fft(s); %傅里叶变换

z12=filter(num12,den12,s);

sound(z12);

m12=fft(z12); %求滤波后的信号 subplot(2,2,1);

title('滤波前信号的频谱');

subplot(2,2,2);

plot(abs(m12),'r');

title('滤波后信号的频谱');

subplot(2,2,3);

plot(s);

title('滤波前信号的波形');

subplot(2,2,4);

plot(z12);

title('滤波后的信号波形');

上面设计出的四种滤波器均可满足设计指标:在12003000Hz f Hz ≤≤的通带内最大衰减1p A dB =,在10003200f Hz f Hz ≤≥和的阻带内最小衰减,10s A dB =。比较四种滤波器的幅频特性可以看出巴特沃斯滤波器在阻带内有更好的衰减特性,故IIR 带通滤波器选择巴特沃斯型滤波器。下图3.7是IIR 数字滤波器的语音信号的频谱波形图:

图3.7 IIR 带通语音信号频谱波形图

% ======================IIR 高通滤波器=======================

[y,fs,nbits]=wavread ('D:/1.wav');

n = length (y) ; %求出语音信号的长度

s=y;

S=fft(s); %傅里叶变换

z13=filter(num13,den13,s);

sound(z13);

m13=fft(z13); %求滤波后的信号

subplot(2,2,1);

plot(abs(S),'g');

title('滤波前信号的频谱');

subplot(2,2,2);

plot(abs(m13),'r');

title('滤波后信号的频谱');

subplot(2,2,3);

plot(s);

title('滤波前信号的波形');

subplot(2,2,4);

plot(z13);

title('滤波后的信号波形');

上面设计出的三种滤波器均可满足设计指标:在f<8000的阻带内最小衰减10s A dB =,在f>4800的通带内最大衰减1p A dB =。比较三种滤波器的幅频特性可以看出巴特沃斯滤波器在阻带内有更好的衰减特性,故IIR 高通滤波器选择巴特沃斯型滤波器。 如下图3.8所示高通IIR 语音信号频谱波形图:

图3.8 高通IIR 语音信号频谱波形图

4合成信号的具体实现

4.1合成信号的产生原理

抑制载波单频调幅信号的数学表达式为:

如式2.1:

[]))(2cos())(2cos(21)2cos()2cos()(000t f f t f f t f t f t s c c c ++-==ππππ

其中,)2cos(t f c π称为载波,c f 为载波频率,)2cos(0t f π称为单频调制信号,0f 为调制正弦波信号频率,且满足c f >0f 。由(2.1)式可见,所谓抑制载波单频调制信号,就是两个正弦信号相乘,它有2个频率成分:和频c f +0f ,差频c f -0f ,这两个频率成分关于载波频率c f 对称。所以,1路抑制载波单频调幅信号的频谱图是关于载波频率c f 对称的两根谱线。

显然,当调制频率0f 和(或)载波频率c f 不同时,可以得到包含不同频率成分的单频调幅信号,将几路不同频率成分的单频调幅信号相加后形成混合信号。 4.2调试分析

4.2.1混合信号分析

利用MATLAB 编写混合信号的函数并运行如下图4.1所示:

从波形中可以看出,已经将三路不同成分的频率混合到一起,接下来的就是要设计三个滤波器将其滤波开来,得到相对应的频率成分。

图4.1 混合信号时域和幅频特性曲线图

4.2.2三种滤波器设计

设定可以分离st 中三路抑制载波单频调幅信号的三个滤波器设计低通滤波器、带通

滤波器和高通滤波器的通带截止频率和阻带截止频率;假定要求滤波器的通带最大衰减为1dB,阻带最小衰减为100dB,编程调用MATLAB滤波器设计函数分别设计这三个数字滤波器,并绘图显示其幅频特性曲线。低通,高通,带通的滤波器幅频特性曲。如下4.2,4.3,4.4所示:

图4.2FIR合成信号低通滤波器幅频特性曲线图

图4.3 FIR合成信号高通滤波器幅频特性曲线图

图4.4 FIR合成信号带通通滤波器幅频特性曲线图

从以上图形可以知道,利用参数去设计出三个相对应的滤波器对混合信号进行滤除波形,在选取参数时要能正确的选择,才能对应的去分离相对应的信号,否则容易叠加信号,不符合设计要求。且FIR数字滤波器相对于IIR数字滤波器的最大优点是能够做到严格线性相位,所以在设计数字滤波器时可以根据设计参数和要求进行合适的选择设计

方法,使得设计出来的结果最能符合设计要求。

5 MATLAB GUI的简介

MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。

MATLAB是矩阵实验室(Matrix Laboratory)的简称,和Mathematica、Mape并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++ ,JA V A的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用。

MATALB 可以创建图形用户界面GUI ( GraphicalUser Interface) ,它是用户和计算机之间交流的工具。MATLAB 将所有GUl 支持的用户控件都集成在这个环境中并提供界面外观、属性和行为响应方式的设置方法,随着版本的提高,这种能力还会不断加强。而且具有强大的绘图功能,可以轻松的获得更高质量的曲线图。

MATALB 可以创建图形用户界面GUI ( GraphicalUser Interface) ,它是用户和计算机之间交流的工具。MATLAB 将所有GUl 支持的用户控件都集成在这个环境中并提供界面外观、属性和行为响应方式的设置方法,随着版本的提高,这种能力还会不断加强。而且具有强大的绘图功能,可以轻松的获得更高质量的曲线图。

5.1 MATLAB软件介绍

Matlab是由matrix和laboratory两个英文单词的前三个字母组合而成,是“Matrix Laboratory”的缩写,意为“矩阵实验室”,它是MathWorks公司于1984年推出的一套高性能的数值计算可视理等方面产生了大量的矩阵及其相应的计算问题。自己去编写大量的繁复的计算程序,不仅会消耗大量的时间和精力,减缓工作进程,而且往往质量不高.美国Mathwork软件公司推出的Matlab软件就是为了给人们提供一个方便的数值计算平台而设计的。

Matlab是一个交互式的系统,它的基本运算单元是不需指定维数的矩阵,按照IEEE 的数值计算标准(能正确处理无穷数Inf(Infinity)、无定义数NaN(not-a-number)及其运算)进行计算。系统提供了大量的矩阵及其它运算函数,可以方便地进行一些很复杂的计算,而且运算效率极高。Matlab命令和数学中的符号、公式非常接近,可读性强,容易掌握,

还可利用它所提供的编程语言进行编程完成特定的工作。除基本部分外,Matlab还根据各专门领域中的特殊需要提供了许多可选的工具箱,如应用于自动控制领域的Control System工具箱和神经网络中Neural Network工具箱等。

5.2 MATLAB常用函数简介

(1)wavread函数:[y,fs,bits]=wavread('Blip')用于读取语音,采样值放在向量y中,fs 表示采样频率(Hz),bits表示采样位数。sound(x,fs,bits); 用于对声音的回放。向量y则就代表了一个信号(也即一个复杂的“函数表达式”)也就是说可以像处理一个信号表达式一样处理这个声音信号。

(2)FFT函数:FFT用于序列快速傅立叶变换。其调用格式为:y=fft(x)。其中,x是序列,y是序列的FFT,x可以为一向量或矩阵:若x为一向量,y是x的FFT,且和x 相同长度。若x为一矩阵,则y是对矩阵的每一列向量进行FFT。

(3)Fir1函数:fir1函数是基于窗函数的FIR滤波器设计——标准频率响应形状。其调用格式为b=fir1(N,we,’ftype’,window)。ftype和window可以默认。

5.3设计系统界面

5.3.1 系统界面设计工具—GUI概述

图形用户界面(graphical user interfaces ,GUI)则是由窗口、光标、按键、菜单、文字说明等对象(objects)构成的一个用户界面。用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。在MATLAB中GUI是一中包含多种对象的图形窗口,并为GUI开发提供一个方便高效的集成开发环境GUIDE。GUIDE主要是一个界面设计工具集,MAYLAB将所有GUI支持度控件都集成在这个环境中,并提供界面外观、属性和行为响应方式的设置方法。GUIDE 将设计好的GUI保存在一个FIG文件中,同时生成M文件框架。

FIG文件:包括GUI图形窗口及其所有后裔的完全描述,包括所有对象属性的属性值。它是一个二进制文件调用hsave课保存图形窗口时将生车该文件。M文件包括GUI 设计、控件函数以及定义为子函数的用户控件回调函数,主要用于控制GUI展开时的各种特征。GUI创建包括界面设计和控件编程两部分,主要步骤如下。第一步:通过设置GUIDE应用程序的选项来运行GUIDE;第二步:使用界面设计编辑器进行面设计;第三步:编写控件行为响应控制(即回调函数)代码。

5.3.2 界面设计及使用说明

MATALB 可以创建图形用户界面GUI ( GraphicalUser Interface) ,它是用户和计算机之间交流的工具。MATLAB 将所有GUl 支持的用户控件都集成在这个环境中并提供界面外观、属性和行为响应方式的设置方法,随着版本的提高,这种能力

还会不断加强。而且具有强大的绘图功能,可以轻松的获得更高质量的曲线图。

首先我们新建一个GUI文件:File/New/GUI 如下图5.1所示:

图5.1进入GUI界面框图

选择Blank GUI(Default)。

其次,进入GUI开发环境以后添加两个编辑文本框,6个静态文本框,和一个按钮,布置如下图5.2所示:

图5.2 GUI界面开发环境

布置好各控件以后,我们就可以来为这些控件编写程序来实现两数相加的功能了。

数字信号处理的MATLAB实现

昆明理工大学信息工程与自动化学院学生实验报告 (2011—2012 学年第二学期) 课程名称:数字信号处理开课实验室:信自楼111 2012 年 5 月 31 日年级、专业、班生医学号姓 名 成绩 实验项目名称数字信号处理的matlab 实现指导教师 教 师 评语教师签名: 年月日 一.实验目的 熟练掌握matlab的基本操作。 了解数字信号处理的MATLAB实现。 二.实验设备 安装有matlab的PC机一台。 三.实验内容 .1.求信号x(n)=cos(6.3Пn/3)+cos(9.7Пn/30)+cos(15.3Пn/30),0≤n≤29的幅度频谱. 2. 用冲击响应不变法设计一个Butterworth低通数字滤波器,要求参数为: Wp=0.2Пαp=1dB Ws=0.3Пαs=15dB 3.用双线性变换法设计一个Chebyshev高通IIR滤波器,要求参数为: Wp=0.6Пαp=1dB Ws=0.4586Пαs=15dB 4.用窗函数法设计一个低通FIR滤波器,要求参数为: Wp=0.2Пαp=0.3dB Ws=0.25Пαs=50dB 5.用频率抽样法设计一个带通FIR滤波器,要求参数为: W1s=0.2П W1p=0.35П W2p=0.65П W2s=0.8П αs=60dB αp=1dB 6.根据 4 点矩形序列,( n ) = [1 1 1 1] 。做 DTFT 变换,再做 4 点 DFT 变换。然后分别补零做 8 点 DFT 及 16 点 DFT。 7.调用filter解差分方程,由系统对u(n)的响应判断稳定性 8编制程序求解下列系统的单位冲激响应和阶跃响应。 y[n]+ 0.75y[n -1]+ 0.125y[n -2] = x[n]- x[n -1] 四.实验源程序 1. n=[0:1:29]; x=cos(6.3*pi*n/30)+cos(9.7*pi*n/30)+cos(15.3*pi*n/30);

数字信号处理 语音信号分析与处理及其MATLAB实现..

摘要 (2) 1 设计目的与要求 (3) 2 设计步骤 (4) 3 设计原理及内容 (5) 3.1 理论依据 (5) 3.2 信号采集 (6) 3.3 构造受干扰信号并对其FFT频谱分析 (8) 3.4 数字滤波器设计 (9) 3.5 信号处理 (10) 总结 (12) 致谢 (13) 参考文献 (14)

用MATLAB对语音信号进行分析与处理,采集语音信号后,在MATLAB软件平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号。 数字滤波器是数字信号处理的基础,用来对信号进行过滤、检测和参数估计等处理。IIR数字滤波器最大的优点是给定一组指标时,它的阶数要比相同组的FIR滤波器的低的多。信号处理中和频谱分析最为密切的理论基础是傅立叶变换(FT)。离散傅立叶变换(DFT)和数字滤波是数字信号处理的最基本内容。 关键词:MATLAB;语音信号;加入噪声;滤波器;滤波

1. 设计目的与要求 (1)待处理的语音信号是一个在20Hz~20kHz频段的低频信号 (2)要求MATLAB对语音信号进行分析和处理,采集语音信号后,在MATLAB平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器进行滤除噪声,恢复原信号。

2. 设计步骤 (1)选择一个语音信号或者自己录制一段语音文件作为分析对象; (2)对语音信号进行采样,并对语音信号进行FFT频谱分析,画出信号的时域波形图和频谱图; (3)利用MATLAB自带的随机函数产生噪声加入到语音信号中,对语音信号进行回放,对其进行FFT频谱分析; (4)设计合适滤波器,对带有噪声的语音信号进行滤波,画出滤波前后的时域波形图和频谱图,比较加噪前后的语音信号,分析发生的变化; (5)对语音信号进行回放,感觉声音变化。

语音信号滤波去噪——使用双线性变换法设计的切比雪夫II型滤波器

课程设计任务书

语音信号滤波去噪——使用脉冲响应不变法设计的巴特沃斯滤波器 摘要本课程设计主要运用麦克风采集一段语音信号,绘制波形并观察其频谱,给定相应技术指标,用脉冲响应不变法设计的一个满足指标的巴特沃斯IIR滤波器,对该语音信号进行滤波去噪处理,比较滤波前后的波形和频谱并进行分析,根据结果和学过的理论得出合理的结论。 关键词课程设计;滤波去噪;巴特沃斯滤波器;脉冲响应不变法;MATLAB 1 引言 本课程设计主要利用麦克风采集一段8000Hz,8k的单声道语音信号,并绘制波形观察其频谱,再用MATLAB利用脉冲响应不变法设计一个巴特沃斯滤波器,将该语音信号进行滤波去噪处理。 1.1 课程设计目的 《数字信号处理》课程设计是在学生完成数字信号处理和MATLAB的结合后的基本实验以后开设的。本课程设计的目的是为了让学生综合数字信号处理和MATLAB并实现一个较为完整的小型滤波系统。这一点与验证性的基本实验有本质性的区别。开设课程设计环节的主要目的是通过系统设计、软件仿真、程序安排与调试、写实习报告等步骤,使学生初步掌握工程设计的具体步骤和方法,提高分析问题和解决问题的能力,提高实际应用水平。 1.2课程设计的要求 (1)滤波器指标必须符合工程设计。 (2)设计完后应检查其频率响应曲线是否满足指标。

(3)处理结果和分析结论应该一致,而且应符合理论。 (4)独立完成课程设计并按要求编写课程设计报告。 2 设计原理 用麦克风采集一段语音信号,绘制波形并观察其频谱,给定相应技术指标,用脉冲响应不变法设计的一个满足指标的巴特沃斯IIR滤波器,对该语音信号进行滤波去噪处理,比较滤波前后的波形和频谱并进行分析。 2.1 IIR滤波器 I IR滤波器设计方法有间接法和直接法,间接法是借助于模拟滤波器的设计方法进行的。其设计步骤是:先设计过渡模拟滤波器得到系统函数H(s),然后将H(s)按某种方法转换成数字滤波器的系统函数H(z)。FIR滤波器比鞥采用间接法,常用的方法有窗函数法、频率采样发和切比雪夫等波纹逼近法。对于线性相位滤波器,经常采用FIR 滤波器。 对于数字高通、带通滤波器的设计,通用方法为双线性变换法。可以借助于模拟滤波器的频率转换设计一个所需类型的过渡模拟滤波器,再经过双线性变换将其转换策划那个所需的数字滤波器。具体设计步骤如下: (1)确定所需类型数字滤波器的技术指标。 (2)将所需类型数字滤波器的边界频率转换成相应的模拟滤波器的边界频率,转换公式为Ω=2/T tan(0.5ω) (3)将相应类型的模拟滤波器技术指标转换成模拟低通滤波器技术指标。 (4)设计模拟低通滤波器。 (5)通过频率变换将模拟低通转换成相应类型的过渡模拟滤波器。 (6)采用双线性变换法将相应类型的过渡模拟滤波器转换成所需类型的数字滤波器。 我们知道,脉冲响应不变法的主要缺点是会产生频谱混叠现象,使数字滤波器的频响偏离模拟滤波器的频响特性。为了克服之一缺点,可以采用双线性变换法。 下面我们总结一下利用模拟滤波器设计IIR数字低通滤波器的步骤: (1)确定数字低通滤波器的技术指标:通带边界频率、通带最大衰减,阻带截止频率、阻带最小衰减。

数字信号处理Matlab实现实例(推荐给学生)

数字信号处理Matlab 实现实例 第1章离散时间信号与系统 例1-1 用MATLAB计算序列{-2 0 1 –1 3}和序列{1 2 0 -1}的离散卷积。 解 MATLAB程序如下: a=[-2 0 1 -1 3]; b=[1 2 0 -1]; c=conv(a,b); M=length(c)-1; n=0:1:M; stem(n,c); xlabel('n'); ylabel('幅度'); 图1.1给出了卷积结果的图形,求得的结果存放在数组c中为:{-2 -4 1 3 1 5 1 -3}。 例1-2 用MATLAB计算差分方程 当输入序列为时的输出结果。 解 MATLAB程序如下: N=41; a=[0.8 -0.44 0.36 0.22]; b=[1 0.7 -0.45 -0.6]; x=[1 zeros(1,N-1)];

k=0:1:N-1; y=filter(a,b,x); stem(k,y) xlabel('n');ylabel('幅度') 图 1.2 给出了该差分方程的前41个样点的输出,即该系统的单位脉冲响应。 例1-3 用MATLAB 计算例1-2差分方程 所对应的系统函数的DTFT 。 解 例1-2差分方程所对应的系统函数为: 123 123 0.80.440.360.02()10.70.450.6z z z H z z z z -------++= +-- 其DTFT 为 23230.80.440.360.02()10.70.450.6j j j j j j j e e e H e e e e ωωωω ωωω--------++= +-- 用MATLAB 计算的程序如下: k=256; num=[0.8 -0.44 0.36 0.02]; den=[1 0.7 -0.45 -0.6]; w=0:pi/k:pi; h=freqz(num,den,w); subplot(2,2,1); plot(w/pi,real(h));grid title('实部') xlabel('\omega/\pi');ylabel('幅度')

基于MATLAB的数字信号发生器报告

基于MATLAB的数字信号发生器设计报告 摘要:数字信号发生器是基于软硬件实现的一种波形发生仪器。在工工程实践中需要检测和分析的各种复杂信号均可分解成各简单信号之和,而这些简单信号皆可由数字信号发生器模拟产生,因此它在工程分析和实验教学有着广泛的应用。MATLAB是一个数据分析和处理功能十分强大的工程实用软件,他的数据采集工具箱为实现数据的输入和输出提供了十分方便的函数和命令,在数字信号处理方面方便实用。本文介绍了使用MATLAB建立一个简单数字信号发生器的基本流程,并详细叙述了简单波形(正弦波、方波、三角波、锯齿波、白噪声)信号的具体实现方法。 关键字:MATLAB ,数字信号发生器 1概述 随着计算机软硬件技术的发展,越来越多现实物品的功能能够由计算机实现。信号发生器原本是模拟电子技术发展的产物,到后来的数字信号发生器也是通过硬件实现的,本文将给出通过计算机软件实现的数字信号发生器。 信号发生器是一种常用的信号源,广泛应用于电子技术实验、自控系统和科学研究等领域。传统的台式仪器如任意函数发生器等加工工艺复杂、价格高、仪器面板单调、数据存储、处理不方便。以Matlab

和LabVlEW 为代表的软件的出现,轻松地用虚拟仪器技术解决了这些问题。 Matlab 是一个数据分析和处理功能十分强大的工程实用软件,他的数据采集工具箱(data acquisition toolbox )为实现数据的输入和输出提供了十分方便的函数和命令,利用这些函数和命令可以很容易地实现对外部物理世界的信号输出和输入。根据声卡输出信号的原理,采用Matlab 软件编程,可以方便地输出所需要的正弦波、三角波、方波等多种信号,有效地实现信号发生器的基本功能。 2 设计原理 要设计的数字信号有正弦信号、方波信号、三角波、锯齿波、白噪声、脉冲信号。其中,前五种波形都可以利用MATLAB 提供的函数实现,并根据输入的幅值、相位、频率等信息进行调整。脉冲信号由自己编写程序实现,并以定义的时间节点控制脉冲出现的时刻。 2.1 正弦信号的实现 正弦波信号的数学表达式如2.1, ()sin 2y A ft πφ=+ 2.1 其中:A 为幅值; f 为频率; φ为相位。 在MATLAB 中,相应的数字信号可以由下式2.2计算,

滤波器语音信号去噪要点

******************* 实践教学 ******************* 兰州理工大学 计算机与通信学院 2013年春季学期 信号处理课程设计 题目:基于MATLAB的FIR滤波器语音信号去噪专业班级:通信工程(1)班 姓名:王兴栋 学号:10250114 指导教师:陈海燕 成绩:

摘要 语音信号在数字信号处理中占有极其重要的地位,因此选择通过对语音信号的研究来巩固和掌握数字信号处理的基本能力十分具有代表性。对数字信号处理离不开滤波器,因此滤波器的设计在信号处理中占有极其重要的地位。而MATLAB 软件工具箱提供了对各种数字滤波器的设计。本论文“在MATLAB平台上实现对语音信号的去噪研究与仿真”综合运用了数字信号处理的各种基本知识,进而对不带噪语音信号进行谱分析以及带噪语音信号进行谱分析和滤波处理。通过理论推导得出相应的结论,再通过利用MATLAB作为编程工具来进行计算机实现比价已验证推导出来的结论。在设计过程中,通过设计FIR数字滤波器和IIR数字滤波器来完成滤波处理。在设计过程中,运用了MATLAB对整个设计中的图形的绘制和一些数据的计算以及仿真。 关键字滤波器;MATLAB;仿真;滤波

前言 语音是语言的声学表现,是人类交流信息最自然、最有效、最方便的手段。随着社会文化的进步和科学技术的发展,人类开始进入了信息化时代,用现代手段研究语音处理技术,使人们能更加有效地产生、传输、存储、和获取语音信息,这对于促进社会的发展具有十分重要的意义,因此,语音信号处理正越来越受到人们的关注和广泛的研究。 语音信号是信息技术处理中最重要的一门科学,是人类社会几步的标志。那么什么是语音?语音是人类特有的功能,也是人类获取外界信息的重要工具,也是人与人交流必不可少的重要手段。那么什么又是信号?那信号是什么呢?信号是传递信息的函数。离散时间信号——序列——可以用图形来表示。 语音信号处理是一门用研究数字信号处理研究信号的科学。它是一新兴的信息科学,同时又是综合多个学科领域的一门交叉科学。语音在我们的日常生活中随时可见,也随处可见,语音很大程度上可以影响我们的生活。所以研究语音信号无论是在科学领域上还是日常生活中都有其广泛而重要的意义。 本论文主要介绍的是的语音信号的简单处理。本论文针对以上问题,运用数字信号学基本原理实现语音信号的处理,在matlab7.0环境下综合运用信号提取,幅频变换以及傅里叶变换、滤波等技术来进行语音信号处理。我所做的工作就是在matlab7.0软件上编写一个处理语音信号的程序,能对语音信号进行采集,并对其进行各种处理,达到简单语音信号处理的目的。 对语音信号的研究,本论文采用了设计两种滤波器的基本研究方法来达到研究语音信号去噪的目的,最终结合图像以及对语音信号的回放,通过对比,得出结论。

数字信号处理MATLAB中FFT实现

MATLAB中FFT的使用方法 说明:以下资源来源于《数字信号处理的MATLAB实现》万永革主编 一.调用方法 X=FFT(x); X=FFT(x,N); x=IFFT(X); x=IFFT(X,N) 用MATLAB进行谱分析时注意: (1)函数FFT返回值的数据结构具有对称性。 例: N=8; n=0:N-1; xn=[43267890]; Xk=fft(xn) → Xk= 39.0000-10.7782+6.2929i0-5.0000i 4.7782-7.7071i 5.0000 4.7782+7.7071i0+5.0000i-10.7782-6.2929i Xk与xn的维数相同,共有8个元素。Xk的第一个数对应于直流分量,即频率值为0。 (2)做FFT分析时,幅值大小与FFT选择的点数有关,但不影响分析结果。在IFFT时已经做了处理。要得到真实的振幅值的大小,只要将得到的变换后结果乘以2除以N即可。 二.FFT应用举例 例1:x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t)。采样频率fs=100Hz,分别绘制N=128、1024点幅频图。

clf; fs=100;N=128;%采样频率和数据点数 n=0:N-1;t=n/fs;%时间序列 x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t);%信号 y=fft(x,N);%对信号进行快速Fourier变换 mag=abs(y);%求得Fourier变换后的振幅 f=n*fs/N;%频率序列 subplot(2,2,1),plot(f,mag);%绘出随频率变化的振幅 xlabel('频率/Hz'); ylabel('振幅');title('N=128');grid on; subplot(2,2,2),plot(f(1:N/2),mag(1:N/2));%绘出Nyquist频率之前随频率变化的振幅xlabel('频率/Hz'); ylabel('振幅');title('N=128');grid on; %对信号采样数据为1024点的处理 fs=100;N=1024;n=0:N-1;t=n/fs; x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t);%信号 y=fft(x,N);%对信号进行快速Fourier变换 mag=abs(y);%求取Fourier变换的振幅 f=n*fs/N; subplot(2,2,3),plot(f,mag);%绘出随频率变化的振幅 xlabel('频率/Hz'); ylabel('振幅');title('N=1024');grid on; subplot(2,2,4) plot(f(1:N/2),mag(1:N/2));%绘出Nyquist频率之前随频率变化的振幅 xlabel('频率/Hz'); ylabel('振幅');title('N=1024');grid on; 运行结果:

数字信号处理课设+语音信号的数字滤波

语音信号的数字滤波 ——利用双线性变换法实现IIR数字滤波器的设计一.课程设计的目的 通过对常用数字滤波器的设计和实现,掌握数字信号处理的工作原理及设计方法;熟悉用双线性变换法设计 IIR 数字滤波器的原理与方法,掌握利用数字滤波器对信号进行滤波的方法,掌握数字滤波器的计算机仿真方法,并能够对设计结果加以分析。 二.设计方案论证 1.IIR数字滤波器设计方法 IIR数字滤波器是一种离散时间系统,其系统函数为 假设M≤N,当M>N时,系统函数可以看作一个IIR的子系统和一个(M-N)的FIR子系统的级联。IIR数字滤波器的设计实际上是求解滤波器的系数和,它 是数学上的一种逼近问题,即在规定意义上(通常采用最小均方误差准则)去逼近系统的特性。如果在S平面上去逼近,就得到模拟滤波器;如果在z平面上去逼近,就得到数字滤波器。 2.用双线性变换法设计IIR数字滤波器 脉冲响应不变法的主要缺点是产生频率响应的混叠失真。这是因为从S平面到Z平面是多值的映射关系所造成的。为了克服这一缺点,可以采用非线性频率压缩方法,将整个频率轴上的频率范围压缩到-π/T~π/T之间,再用z=e sT转换 平面的-π/T~π到Z平面上。也就是说,第一步先将整个S平面压缩映射到S 1 /T一条横带里;第二步再通过标准变换关系z=e s1T将此横带变换到整个Z平面上去。这样就使S平面与Z平面建立了一一对应的单值关系,消除了多值变换性,也就消除了频谱混叠现象,映射关系如图1所示。 图1双线性变换的映射关系 为了将S平面的整个虚轴jΩ压缩到S1平面jΩ1轴上的-π/T到π/T段上,可以通过以下的正切变换实现

实验一 基于Matlab的数字信号处理基本

实验一 基于Matlab 的数字信号处理基本操作 一、 实验目的:学会运用MA TLAB 表示的常用离散时间信号;学会运用MA TLAB 实现离 散时间信号的基本运算。 二、 实验仪器:电脑一台,MATLAB6.5或更高级版本软件一套。 三、 实验内容: (一) 离散时间信号在MATLAB 中的表示 离散时间信号是指在离散时刻才有定义的信号,简称离散信号,或者序列。离散序列通常用)(n x 来表示,自变量必须是整数。 离散时间信号的波形绘制在MATLAB 中一般用stem 函数。stem 函数的基本用法和plot 函数一样,它绘制的波形图的每个样本点上有一个小圆圈,默认是空心的。如果要实心,需使用参数“fill ”、“filled ”,或者参数“.”。由于MATLAB 中矩阵元素的个数有限,所以MA TLAB 只能表示一定时间范围内有限长度的序列;而对于无限序列,也只能在一定时间范围内表示出来。类似于连续时间信号,离散时间信号也有一些典型的离散时间信号。 1. 单位取样序列 单位取样序列)(n δ,也称为单位冲激序列,定义为 ) 0() 0(0 1)(≠=?? ?=n n n δ 要注意,单位冲激序列不是单位冲激函数的简单离散抽样,它在n =0处是取确定的值1。在MATLAB 中,冲激序列可以通过编写以下的impDT .m 文件来实现,即 function y=impDT(n) y=(n==0); %当参数为0时冲激为1,否则为0 调用该函数时n 必须为整数或整数向量。 【实例1-1】 利用MATLAB 的impDT 函数绘出单位冲激序列的波形图。 解:MATLAB 源程序为 >>n=-3:3; >>x=impDT(n); >>stem(n,x,'fill'),xlabel('n'),grid on >>title('单位冲激序列') >>axis([-3 3 -0.1 1.1]) 程序运行结果如图1-1所示。 图1-1 单位冲激序列

《语音信号滤波去噪》word版

一、设计的目的和意义 数字滤波器和快速傅立叶变换(FFT)等是语音信号数字处理的理论和技术基础,是20世纪60年代形成的一系列数字信号处理的理论和算法。在数字信号处理中,滤波器的设计占有极其重要的地位。而其中,FIR数字滤波器和IIR数字滤波器是重要组成部分。Matlab具有功能强大、简单易学、编程效率高等特点,深受广大科技工作者的喜爱。特别是Matlab中还具有信号分析工具箱,所以对于使用者,不需要具备很强的编程能力,就可以方便地进行信号分析、处理和设计。利用Matlab中的信号处理工具箱,可以快速有效的设计各种数字滤波器。本论文基于Matlab语音信号处理的设计与实现,综合运用数字信号处理的相关理论知识,对加噪声语音信号进行时域、频域分析并滤波。而后通过理论推导得出相应结论,再利用Matlab作为编程工具进行计算机实现工作。 本次课程设计的课题为《基于DSP的语音信号滤波去噪》,运用麦克风采集一段语音信号,绘制波形并观察其频谱,给定相应技术指标,用脉冲响应不变法设计的一个满足指标的巴特沃斯IIR滤波器,对该语音信号进行滤波去噪处理,比较滤波前后的波形和频谱并进行分析,根据结果和学过的理论得出合理的结论。 二、设计原理: 2.1 巴特沃斯滤波器 巴特沃斯滤波器是电子滤波器的一种。巴特沃斯滤波器的特点是通频带的频率响应曲线最平滑。巴特沃斯滤波器的特性是通频带内的频率响应曲线最大限度平坦,没有起伏,而在组频带则逐渐下降为零。在振幅的对数对角频率的波得图上,从某一边界角频率开始,振幅随着角频率的增加而逐步减少,趋向负无穷大。 其振幅平方函数具有如2-1式:

(2-1) 式中,N为整数,称为滤波器的阶数,N越大,通带和阻带的近似性越好,过渡带也越陡。如下图2.1所示: 图2.1 巴特沃兹filter 振幅平方函数 过渡带:通带→阻带间过渡的频率范围,Ω c :截止频率。 理想滤波器的过渡带为Ω,阻带|H(jΩ)|=0,通带内幅度|H (jΩ)|=常数,H(jΩ)线性相位。通带内,分母Ω/Ω c <1,相应(Ω /Ω c )2N随N的增加而趋于0,A(Ω2)→1,在过渡带和阻带,Ω/ Ω c >1,随N的增加,Ω e /Ω c >>1,所以A(Ω2)快速下降。 Ω=Ω c 时,,幅度衰减,相当于3bd衰减点。振幅平方函数的极点可写成如式2-2:

数字信号处理期末实验-语音信号分析与处理

语音信号分析与处理 摘要 用MATLAB对语音信号进行分析与处理,采集语音信号后,在MATLAB软件平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号。 数字滤波器是数字信号处理的基础,用来对信号进行过滤、检测和参数估计等处理。IIR数字滤波器最大的优点是给定一组指标时,它的阶数要比相同组的FIR滤波器的低的多。信号处理中和频谱分析最为密切的理论基础是傅立叶变换(FT)。离散傅立叶变换(DFT)和数字滤波是数字信号处理的最基本内容。 关键词:MATLAB;语音信号;加入噪声;滤波器;滤波 1. 设计目的与要求 (1)待处理的语音信号是一个在20Hz~20kHz频段的低频信号。 (2)要求MATLAB对语音信号进行分析和处理,采集语音信号后,在MATLAB平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器进行滤除噪声,恢复原信号。

2. 设计步骤 (1)选择一个语音信号或者自己录制一段语音文件作为分析对象; (2)对语音信号进行采样,并对语音信号进行FFT频谱分析,画出信号的时域波形图和频谱图; (3)利用MATLAB自带的随机函数产生噪声加入到语音信号中,对语音信号进行回放,对其进行FFT频谱分析; (4)设计合适滤波器,对带有噪声的语音信号进行滤波,画出滤波前后的时域波形图和频谱图,比较加噪前后的语音信号,分析发生的变化; (5)对语音信号进行回放,感觉声音变化。 3. 设计原理及内容 3.1 理论依据 (1)采样频率:采样频率(也称采样速度或者采样率)定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示。采样频率只能用于周期性采样的采样器,对于非周期采样的采样器没有规则限制。通俗的讲,采样频率是指计算机每秒钟采集多少个声音样本,是描述声音文件的音质、音调,衡量声卡、声音文件的质量标准。采样频率越高,即采样的间隔时间越短,则在单位之间内计算机得到的声音样本数据就越多,对声音波形的表示也越精确。 (2)采样位数:即采样值或取样值,用来衡量声音波动变化的参数。 (3)采样定理:在进行模拟/数字信号的的转换过程中,当采样频率f s.max大于信号中,最高频率f max的2倍时,即:f s.max>=2f max,则采样之后的数字信号完整的保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的5~10倍;采样频率又称乃奎斯特定理。 (4)时域信号的FFT分析:信号的频谱分析就是计算信号的傅立叶变换。连续信号与系统的傅立叶分析显然不便于直接用计算机进行计算,使其应用受到限制。而FFT是一种时域和频域均离散化的变换,适合数值计算,成为用计算机分析离

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

基于MATLAB的语音信号滤波处理 题目:基于MATLAB的语音信号滤波处理 课程:数字信号处理 学院:电气工程学院 班级: 学生: 指导教师: 二O一三年十二月

目录CONTENTS 摘要 一、引言 二、正文 1.设计要求 2.设计步骤 3.设计内容 4.简易GUI设计 三、结论 四、收获与心得 五、附录

一、引言 随着Matlab仿真技术的推广,我们可以在计算机上对声音信号进行处理,甚至是模拟。通过计算机作图,采样,我们可以更加直观的了解语音信号的性质,通过matlab编程,调用相关的函数,我们可以非常方便的对信号进行运算和处理。 二、正文 2.1 设计要求 在有噪音的环境中录制语音,并设计滤波器去除噪声。 2.2 设计步骤 1.分析原始信号,画出原始信号频谱图及时频图,确定滤波器类型及相关指标; 2.按照类型及指标要求设计出滤波器,画出滤波器幅度和相位响应,分析该滤波器是否符合要求; 3.用所设计的滤波器对原始信号进行滤波处理,画出滤波后信号的频谱图及时频图; 4.对滤波前的信号进行分析比对,评估所设计滤波器性能。 2.3 设计内容 1.原始信号分析

分析信号的谱图可知,噪音在1650HZ和3300HZ附近的能量较高,而人声的能量基本位于1000HZ以下。因此,可以设计低通滤波器对信号进行去噪处理。 2.IIR滤波器设计 用双线性变换法分别设计了巴特沃斯低通滤波器和椭圆低通滤波器和带阻滤波器: ①巴特沃斯滤波器 fp=800;fs=1300;rs=35;rp=0.5; 程序代码如下: fp=800;fs=1300;rs=35;rp=0.5;Fs=44100; wp=2*Fs*tan(2*pi*fp/(2*Fs));ws=2*Fs*tan(2*pi*fs/(2*Fs)); [n,wn]=buttord(wp,ws,rp,rs,'s'); [b,a]=butter(n,wn,'s'); [num,den]=bilinear(b,a,Fs); [h,w]=freqz(num,den,512,Fs);

数字信号处理MATLAB仿真

实验一 数字信号处理的Matlab 仿真 一、实验目的 1、掌握连续信号及其MA TLAB 实现方法; 2、掌握离散信号及其MA TLAB 实现方法 3、掌握离散信号的基本运算方法,以及MA TLAB 实现 4、了解离散傅里叶变换的MA TLAB 实现 5、了解IIR 数字滤波器设计 6、了解FIR 数字滤波器设计1 二、实验设备 计算机,Matlab 软件 三、实验内容 (一)、 连续信号及其MATLAB 实现 1、 单位冲击信号 ()0,0()1,0 t t t dt εεδδε-?=≠??=?>??? 例1.1:t=1/A=50时,单位脉冲序列的MA TLAB 实现程序如下: clear all; t1=-0.5:0.001:0; A=50; A1=1/A; n1=length(t1); u1=zeros(1,n1); t2=0:0.001:A1; t0=0; u2=A*stepfun(t2,t0); t3=A1:0.001:1; n3=length(t3); u3=zeros(1,n3); t=[t1 t2 t3]; u=[u1 u2 u3]; plot(t,u) axis([-0.5 1 0 A+2]) 2、 任意函数 ()()()f t f t d τδττ+∞ -∞=-? 例1.2:用MA TLAB 画出如下表达式的脉冲序列 ()0.4(2)0.8(1) 1.2() 1.5(1) 1.0(2)0.7(3)f n n n n n n n δδδδδδ=-+-+++++++

clear all; t=-2:1:3; N=length(t); x=zeros(1,N); x(1)=0.4; x(2)=0.8 x(3)=1.2; x(4)=1.5; x(5)=1.0; x(6)=0.7; stem(t,x); axis([-2.2 3.2 0 1.7]) 3、 单位阶跃函数 1,0()0,0t u t t ?≥?=?

数字信号处理MATLAB实验1

实验一熟悉MATLAB环境 一、实验目的 (1)熟悉MATLAB的主要操作命令。 (2)学会简单的矩阵输入和数据读写。 (3)掌握简单的绘图命令。 (4)用MATLAB编程并学会创建函数。 (5)观察离散系统的频率响应。 二、实验内容 认真阅读本章附录,在MATLAB环境下重新做一遍附录中的例子,体会各条命令的含义。在熟悉了MATLAB基本命令的基础上,完成以下实验。 上机实验内容: (1)数组的加、减、乘、除和乘方运算。输入A=[1234],B=[345 6],求C=A+B,D=A-B,E=A.*B,F=A./B,G=A.^B并用stem语句画出 A、B、C、D、E、F、G。 (2)用MATLAB实现以下序列。 a)x(n)=0.8n0≤n≤15 b)x(n)=e(0.2+3j)n0≤n≤15 c)x(n)=3cos(0.125πn+0.2π)+2sin(0.25πn+0.1π)0≤n≤15 (n)=x(n+16),绘出四个d)将c)中的x(n)扩展为以16为周期的函数x 16 周期。 (n)=x(n+10),绘出四个e)将c)中的x(n)扩展为以10为周期的函数x 10 周期。

(3)x(n)=[1,-1,3,5],产生并绘出下列序列的样本。 a)x 1(n)=2x(n+2)-x(n-1)-2x(n) b)∑=-=5 1k 2) k n (nx (n) x (4)绘出下列时间函数的图形,对x轴、y轴以及图形上方均须加上适当的标注。 a)x(t)=sin(2πt)0≤t≤10s b)x(t)=cos(100πt)sin(πt) 0≤t≤4s (5)编写函数stepshift(n0,n1,n2)实现u(n-n0),n1

MATLAB实现数字信号处理

《数字信号处理》课程设计实例: 声音信号的处理 一.摘要: 这次课程设计的主要目的是综合运用本课程的理论知识进行频谱分析以及滤波器设计,通过理论推导得出相应结论,并利用MATLAB或者DSP开发系统作为工具进行实现,从而复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力,并从实践上初步实现对数字信号的处理。通过对声音的采样,将声音采样后的频谱与滤波。 MATLAB全称是Matrix Laboratory,是一种功能强大、效率高、交互性好的数值和可视化计算机高级语言,它将数值分析、矩阵运算、信号处理和图形显示有机地融合为一体,形成了一个极其方便、用户界面友好的操作环境。。经过多年的发展,已经发展成为一种功能全面的软件,几乎可以解决科学计算中所有问题。MATLAB软件还提供了非常广泛和灵活的用于处理数据集的数组运算功能。 在本次课程设计中,主要通过MATLAB来编程对语音信号处理与滤波,设计滤波器来处理数字信号并对其进行分析。 二.课程设计目的: 综合运用本课程的理论知识进行频谱分析以及滤波器设计,通过理论推导得出相应结论,并利用MATLAB作为工具进行实现,从而复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力,并从实践上初步实现对数字信号的处理。 三.设计容: 容:录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法和双线性

变换法设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;换一个与你性别相异的人录制同样一段语音容,分析两段容相同的语音信号频谱之间有什么特点;再录制一段同样长时间的背景噪声叠加到你的语音信号中,分析叠加前后信号频谱的变化,设计一个合适的滤波器,能够把该噪声滤除。 四.设计原理: 4.1.语音信号的采集 熟悉并掌握MATLAB中有关声音(wave)录制、播放、存储和读取的函数,在MATLAB环境中,有关声音的函数有: a:y=wavrecord(N,fs,Dtype);利用系统音频输入设备录音,以fs为采样频率,默认值为11025,即以11025HZ进行采样。Dtype为采样数据的存储格式,用字符串指定,可以是:‘double’、‘single’、’int16’、‘int8’其中只有int8是采用8位精度进行采样,其它三种都是16位采样结果转换为指定的MATLAB数据; b:wavplay(y,fs);利用系统音频输出设备播放,以fs为播放频率,播放语音信号y; c:wavwrite((y,fs,wavfile);创建音频文件; d:y=wavread(file);读取音频文件; 关于声音的函数还有sound();soundsc();等。 4.2滤波器: 4.21.IIR滤波器原理 冲激响应不变法是使数字滤波器在时域上模拟滤波器,但是它们的缺点是产生频率响应的混叠失真,这是由于从s平面到z平面是多值的映射关系所造成的。 双线性变换法是使数字滤波器的频率响应与模拟滤波器的频率响应相似的一种变换方法。为了克服多值映射这一缺点,我们首先把整个s平面压缩变换到某一中介的s1平面的一条横带里,再通过变换关系将此横带变换到整个z平面上去,这样就使得s平面与z平面是一一对应的关系,消除了多值变换性,也就消除了频谱混叠现象。

基于matlab的语音信号滤波处理——数字信号处理课程设计

数字信号处理课程设计 题目:基于matlab的语音信号滤波处理学院:物理与电子信息工程 专业:电子信息工程 班级: B07073041 学号: 200932000066 姓名:高珊 指导教师:任先平

摘要: 语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴学科,是目前发展最为迅速的学科之一,通过语音传递信息是人类最重要,最有效,最常用和最方便的交换信息手段,所以对其的研究更显得尤为重要。 Matlab语言是一种数据分析和处理功能十分强大的计算机应用软件,它可以将声音文件变换成离散的数据文件,然后用起强大的矩阵运算能力处理数据。这为我们的本次设计提供了强大并良好的环境! 本设计要求自己录制一段自己的语音后,在MATLAB软件中采集语音信号、回放语音信号并画出语音信号的时域波形和频谱图。再在Matlab中分别设计不同形式的FIR数字滤波器。之后对采集的语音信号经过不同的滤波器(低通、高通、带通)后,观察不同的波形,并进行时域和频谱的分析。对比处理前后的时域图和频谱图,分析各种滤波器对于语音信号的影响。最后分别收听进行滤波后的语音信号效果,做到了解在怎么样的情况下该用怎么样的滤波器。

目录 1.设计内容 (4) 2.设计原理 (4) 2.1语音信号的时域分析 (4) 2.2语音信号的频域分析 (5) 3.设计过程 (5) 3.1实验程序源代码 (6) 3.1.1原语音信号时域、频域图 (6) 3.1.2低通滤波器的设计 (6) 3.1.3高通滤波器的设计 (7) 3.1.4带通滤波器的设计 (8) 3.1.5语音信号的回放 (9) 3.2调试结果描述 (10) 3.3所遇问题及结果分析 (15) 3.3.1所遇主要问题 (16) 3.3.2结果分析 (16) 4.体会与收获 (17) 5.参考文献 (17)

基于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) 致谢 (20)

数字信号处理基本知识点Matlab实现

数字信号处理(第二版) 绪论 1.4 MATLAB 在信号处理中的应用简介 MATLAB 是美国Mathworks 公司于1984年推出的一套高性能的数值计算和可视化软件,它集数值分析、矩阵运算、信号处理、系统仿真和图形显示于一体,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作。 MATLAB 软件包括五大通用功能:数值计算功能(Numeric ),符号运算功能(Symbolic );数据可视化功能(Graphic ),数据图形文字统一处理功能(Notebook )和建模仿真可视化功能(Simulink )。该软件有三大特点:一是功能强大;二是界面友善、语言自然;三是开放性强。目前,Mathworks 公司已推出30多个应用工具箱。MA TLAB 在线性代数、矩阵分析、数值及优化、数理统计和随机信号分析、电路与系统、系统动力学、信号和图像处理、控制理论分析和系统设计、过程控制、建模和仿真、通信系统、以及财政金融等众多领域的理论研究和工程设计中得到了广泛应用。 2.10 离散时间信号与系统的Matlab 表示 2.10.1 离散时间信号的表示和运算 1、基本序列的Matlab 表示 单位采样序列 在MA TLAB 中,单位采样序列可以通过编写以下的DTimpulse .m 文件来实现,即 function y=DTimpulse (n) y=(n==0); %当参数为0时冲激为1,否则为0 调用该函数时n 必须为整数或整数向量。 单位阶跃序列 在MA TLAB 中,单位阶跃序列可以通过编写DTu .m 文件来实现,即 function y=DTu (n) y=n>=0; %当参数为非负时输出1 调用该函数时n 必须为整数或整数向量。 矩形序列 用MA TLAB 表示矩形序列可根据公式()()()N R n u n u n N =--并利用DTu 函数生成,即 function y=DTR(n,N) y=DTu(n)-DTu(n-N); 调用该函数时n 必须为整数或整数向量,N 必须为整数。 实指数序列 用MA TLAB 表示实指数序列()(),n x n a u n n N a R =∈∈,即

相关主题
文本预览
相关文档 最新文档