20xx级数字信号处理实验报告1

20##级数字信号处理实验报告

实验名称: 实验一 数字信号的产生和基本运算

1.实验要求

因为现实世界里存在的是模拟信号,因此数字信号处理的第一个问题是将信号离散化,得到一个数字信号,然后再进行数字处理。

(1) 常用数字信号序列的产生:

熟悉 Matlab 产生数字信号的基本命令,加深对数字信号概念的理解,并能够用 Matlab 产生和绘制出一些常用离散信号序列。请用 Matlab 画出下列序列的波形(-10<n<10):

a) δ(n)

b) 单位阶跃序列 2 u(n-5)

c) 矩形序列 R(n)

d) y(n)=2sin(0.3πn)+ 0.5cos(0.6πn)   

(2) 数字信号的基本运算:

a) 加、减、尺度(乘除)和移位是数字信号处理中最基本的算术运算,将上述基本序列进行这些基本运算,得到多个序列构成的组合序列。

b) 请用您的计算机声卡采用一段您自己的声音 x(n),长度为 45秒,单声道,取样频率 44.1kHz,16bit/样值,然后与给定的一段背景音乐 y(n) 按下式叠加为一个声音信号 z(n):

z(n) = 0.7x(n) + 0.3y(n)

要求:

³  在同一个 Figure 中,画出采集声音 x(n)、背景音乐 y(n)和混音 z(n) 的时域波形;

³  提交实验报告时,请把声音文件转换为 mp3 格式,图像转换为 JPEG 格式,以节省存储空间。

³  通过本次实验,掌握 Matlab 中这些基本运算命令,对数字信号处理有一个基本概念,为后面的数字信号分析和滤波打下基础。

2. 程序分析

第一部分:

1、    δ(n)函数实现

% create impulse function

function[x,n]=impseq(n0,n1,n2)

%This function should be used to create a impseq array

%It return 1 at n0 ,and return 0 at other place

%You should set the arguments as: n1<n0<n2

if((n0<n1)|(n0>n2)|(n1>n2))

    error('Arguments must satisfy n1<=n0<=n2')

end

n=[n1:n2];

x=[(n-n0)==0];

2、    阶跃函数u(n)的实现

%create u(n)

function [x,n]=stepseq(n0,n1,n2)

%This function should be used to create a u(n) array

%It return 1 when n>=n0 ,and return 0 at other place

%You should set the arguments as: n1<n0<n2

if((n0<n1)|(n0>n2)|(n1>n2))

error('Arguments must satisfy n1<=n0<=n2')

end

n=[n1:n2];

x=[(n-n0)>=0];

3,  窗函数R(n)的实现

%create R(n)

function [y,n]=R(n1,left,right,n2)

%This function should be used to create a R(n) array

%It return 1 when left<=n<right ,and return 0 at other place

%You should set the arguments as: n1<=left<=right<=n2

if(n1>left||left>right||right>n2)

    error('Arguments must satisfy ns<=left<=right<=nf')

end

n=[n1:n2];

y=[n>=left]-[n>=right];

4、程序主代码

<<clear

y1=impseq(0,-10,10);

y2=stepseq(5,-10,10)*2;

y3=R(-10,-5,5,10);

n=-10:1:10;temp=-10:0.1:10;

y4(n)=2*sin(0.3*pi*n)+0.5*cos(0.6*pi*n);

y4=2*sin(0.3*pi*n)+0.5*cos(0.6*pi*n);

y5=2*sin(0.3*pi*temp)+0.5*cos(0.6*pi*temp);

subplot(2,2,1),stem(n,y1),title('δ(n)');

subplot(2,2,2),stem(n,y2),title('u(n)');

subplot(2,2,3),stem(n,y3),title('R(n)');

subplot(2,2,4),stem(n,y4),hold on,

plot(temp,y5,':'),title('2sin(0.3pi*n)+0.5cos(0.6pi*n)');

5、运行结果

第二部分:

1、各个函数求和

>>clear

y1=impseq(0,-10,10);

y2=stepseq(5,-10,10)*2;

y3=R(-10,-5,5,10);

y4=2*sin(0.3*pi*n)+0.5*cos(0.6*pi*n);

n=-10:1:10;

y4=2*sin(0.3*pi*n)+0.5*cos(0.6*pi*n);

z1=y1+y2

z2=y2+y3;

z3=y3+y4;

z4=y1*y2;

subplot(3,1,1),stem(n,z1),title('δ(n)+2u(n-5)');

subplot(3,1,2),stem(n,z2),title('2u(n-5)+R(n)');

subplot(3,1,3),stem(n,z3),

title('2sin(0.3pi*n)+0.5cos(0.6pi*n)+R(n)');

运行结果

2、  音频处理

clear

[record,fs,bits]=wavread('record.wav');

[background,fs,bits]=wavread('background.wav');

x=record((fs*0+1:fs*45),:);%录音

y=background((fs*45+1:fs*90),:);%背景音乐

z=1.5*x+0.05*y ;     % 混合后的声音,对录音和背景音乐的声音大小做了改动

wavwrite(z,fs,bits,'music.wav');

subplot(3,1,1),plot(x),title('record');

subplot(3,1,2),plot(y),title('background');

subplot(3,1,3),plot(z),title('music');

运行结果

3.  总结

      通过本次实验,熟悉了matlab7.0的使用方法,以及函数的建立和绘图。在声音采集时,学习了声音采集软件的实用,开阔了知识面。同时学会了调试背景音乐和录音的相对大小,得到了更好的效果。软件的学习,在于不断地实践,今后会更加全面的学习这款软件。

 

第二篇:数字信号处理实验报告11-12-1

《数字信号处理》实验报告

           

           

           

         


实验一  利用FFT实现快速卷积

一、实验目的

1.加深理解FFT在实现数字滤波(或快速卷积)中的重要作用,更好的利用FFT进行数字信号处理。

2.掌握循环卷积和线性卷积两者之间的关系。

二、实验原理

用FFT来快速计算有限长度序列的线性卷积。

这种方法就是先将输入信号x(n)通过FFT变换为它的频谱采样值,然后再和FIR滤波器的频响采样值H(k)相乘,H(k)可事先存放在存储器中,最后再将乘积H(k)X(k)通过快速傅里叶变换(简称IFFT)还原为时域序列,即得到输出y(n)。

现以FFT求有限长序列的卷积及求有限长度序列与较长序列间的卷积为例来讨论FFT的快速卷积方法。

序列x(n)和h(n)的长差不多。设x(n)的长为N1,h(n)的长为N2,要求

用FFT完成这一卷积的具体步骤如下:

①为使两有限长序列的线性卷积可用其循环卷积代替而不发生混叠,必须选择循环卷积长度,若采用基2-FFT完成卷积运算,要求为整数)。

②用补零方法使x(n)和h(n)变成列长为N的序列。

③用FFT计算x(n)和h(n)的N点离散傅里叶变换。

④完成X(k)和H(k)乘积,

⑤用FFT计算 的离散傅里叶反变换得

三、主要实验仪器及材料

微型计算机、Matlab6.5教学版。

四、实验内容

1.数字滤波器的脉冲响应为

输入序列x(n)可选下列几种情况

2.实验前,预先编制一个应用FFT实现数字滤波器的通用程序。

3.上机独立调试,并打印或记录实验结果。

4.将实验结果与预先笔算的结果比较,验证其正确性。

五、思考题

1.N同时取8、16、32时,线性卷积和循环卷积的结果有何不同,为什么?

2.分析直接计算线性卷积和利用FFT计算线性卷积的时间。

六、实验报告要求

1.简述实验原理及目的。

2.记录调试运行情况及所遇问题的解决方法。

3. 给出实验结果,并对结果作出分析。

4.简要回答思考题。


实验二  数字滤波器的结构

一、           实验目的

(1)    加深对数字滤波器分类与结构的了解;

(2)    明确数字滤波器的基本结构及其相互间的转换方法;

(3)    掌握用MATLAB进行数字滤波器各种结构相互间转换的子函数及程序编写方法。

二、           实验原理

一个离散LSI系统可用系统函数来表示;

也可用差分方程来表示:

至少有一个不为0时,则在有限z平面上存在极点,表示一个IIR数字滤波器;当全都为0时,系统不存在极点,表示一个FIR系统。

IIR数字滤波器的基本结构分为直接Ⅰ型、直接Ⅱ型、级联型和并联型。

FIR数字滤波器的基本结构分为横截型、级联型、并联型、、线性相位型和频率抽样型。

三、            实验仪器

     微型计算机、MATLAB

四、    实验内容

(1)  已知一个IIR系统的系统函数为

   将其从直接型转换为级联型和并联型结构,并画出各种结构的流程图。

(2)  已知一个FIR系统的系统函数为

将其从横截型转换为级联型结构,并画出各种结构的流程图。

五、           实验程序

六、           试验结果分析


实验三  用双线性变换法设计IIR数字滤波器

一、           实验目的

(1)    加深对双线性变换法设计FIR数字滤波器的基本原理的理解;

(2)    掌握用双线性变换法设计数字低通、高通、带通滤波器的设计;

(3)    了解MATLAB有关双线性变换法设计的常用子函数。

二、           实验原理

1. 设计思想

s平面与z平面之间满足以下映射关系:

s平面的虚轴单值地映射于z平面的单位圆上,s平面的左半平面完全映射到z平面的单位圆内。双线性变换不存在混叠问题。

双线性变换时一种非线性变换,这种非线性引起的幅频特性畸变可通过预畸而得到校正。

2. 设计步骤

((1)确定数字滤波器的性能指标:通带临界频率、阻带临界频率;通带内的最大衰减;阻带内的最小衰减

 (2)确定相应的数字角频率

     (3)计算经过预畸的相应模拟低通原型的频率

     (4)根据计算模拟低通原型滤波器的阶数N,并求得低通原型的传递函数

     (5)用上面的双线性变换公式代入,求出所设计的传递函数

     (6)分析滤波器特性,检查其指标是否满足要求。

三、            实验仪器

     微型计算机、MATLAB

四、    实验内容

(1) 采用双线性变换法设计一个巴特沃斯数字低通滤波器,要求:通带截止频率,阻带截止频率,滤波器的采样频率,并画出滤波器的幅频响应曲线和相频响应曲线以及零极点图。

五、           实验程序

六、           试验结果分析

七、           思考题

使用双线性变换法时,数字频率与模拟频率有何关系?会带来什么影响?如何解决?


实验四  用窗函数法设计FIR数字滤波器

一、           实验目的

(1)    加深对窗函数法设计FIR数字滤波器的基本原理的理解;

(2)    学习用MATLAB语言的窗函数法编写设计FIR数字滤波器的程序;

(3)    了解MATLAB有关窗函数法设计的常用子函数。

二、           实验原理

1. 设计思想

从时域从发,设计逼近理想。设理想滤波器的单位脉冲响应为一般是无限长的,且是非因果的,不能直接作为FIR滤波器的单位脉冲响应。要想得到一个因果的有限长的滤波器h(n),最直接的方法是截断,即截取为有限长因果序列,并用合适的窗函数进行加权作为FIR滤波器的单位脉冲响应。

2. 设计步骤

(1)根据过渡带和阻带衰减设计指标选择窗函数的类型,并估算滤波器的阶数

(2)由数字滤波器的理想频率响应求出理想的单位冲激响应

(3)计算数字滤波器的单位冲激响应

(4)检查设计出的滤波器是否满足技术指标。

若不满足技术指标,则需重新选择或调整窗函数的类型,估算滤波器的阶数,再重复前面的四个步骤,直到满足指标为止。

三、            实验仪器

     微型计算机、MATLAB

四、    实验内容

选择合适的窗函数设计FIR数字低通滤波器。要求:通带截止频率,阻带截止频率,描绘实际滤波器的脉冲响应、窗函数及滤波器的幅频响应曲线和相频响应曲线。

五、           实验程序

六、           试验结果分析

相关推荐