北邮数字信号处理实验报告

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

2011级数字信号处理实验报告
实验名称:实验一数字信号的产生和基本运算
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=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);
n=-10:1:10;
y4=2*sin(0.3*pi*n)+0.5*cos(0.6*pi*n);
z1=y1+y2;
z2=y3+y4;
z3=y1*2;
subplot(3,1,1),stem(n,z1),title('δ(n)+2u(n-5)'); subplot(3,1,2),stem(n,z2),
title('2sin(0.3pi*n)+0.5cos(0.6pi*n)+R(n)'); subplot(3,1,3),stem(n,z3),title('2*δ(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*0+1:fs*45),:);
z=0.1*x+0.9*y;
subplot(3,1,1),plot(x),title('record');
subplot(3,1,2),plot(y),title('background'); subplot(3,1,3),plot(z),title('music');
wavwrite(z,fs,bits,'music.wav');
运行结果
3. 总结
通过本次实验,熟悉了matlab7.0的使用方法,以及函数的建立和绘图。

在声音采集时,学习了声音采集软件的实用,开阔了知识面。

同时学会了调试背景音乐和录音的相对大小,得到了更好的效果。

软件的学习,在于不断地实践,今后会更加全面的学习这款软件。

相关文档
最新文档