实验一:数字信号的产生和基本运算
(1) 常用数字信号序列的产生:
熟悉Matlab产生数字信号的基本命令,加深对数字信号概念的理解,并能够用Matlab 产生和绘制出一些常用离散信号序列。
请用Matlab画出下列序列的波形(-10<n<10):
a) δ(n)
b) 单位阶跃序列2u(n-5)
c) 矩形序列R(n)
d) y(n)=2sin(0.3πn)+0.5cos2(0.6πn)
(2)数字信号的基本运算:
a)加、减、尺度(乘除)和移位是数字信号处理中最基本的算术运算,将上述基本序列进行这些基本运算,得到多个序列构成的组合序列。
b)请用您的计算机声卡采用一段您自己的声音x(n),长度为45喵,单声道。
取样频率44.1kHz,16bit/样值,然后与给定的一段背景音乐y(n)按下式叠加为一个声音信号z(n):
z(n)=0.7x(n)+0.3y(n)
(3)要求:
a)在同一个figure中,画出采集声音x(n)、背景音乐y(n)和混音z(n)的时域波形;
b)提交实验报告时,请把声音文件转换成mp3格式,图像转换为jpeg格式,以节省存储空间。
C)通过本次实验,掌握matlab中这些基本运算命令,对数字信号处理有一个基本概念,为后面的数字信号分析和滤波打下了基础。
(1):
a)利用.m文件
M文件代码:
function[x,n]=delta(n0,n1,n2)
if((n0<n1)||(n2<n1)||(n2<n0))
error('false')
end
n=n1:n2;
x=(n-n0)==0;
图象为:
b)利用.m文件
M文件代码:
function[x,n]=u(n0,n1,n2)
if((n0<n1)||(n2<n1)||(n2<n0)) error('false')
end
n=n1:n2;
x=(n-n0)>=0;
实现2u(n-5)的命令是:
>> x=2*u(5,-10,10);
>> n=-10:10;
>> stem(n,x)
图像为:
c)利用.m文件
M文件代码:
function[x,n]=R(n0,n1,n2,n3)
if((n0<n2)||(n1>n3)||(n0>n1)||(n2>n3)) error('false')
end
n=n2:n3;
x=(n>=n0)-(n>=n1);
实现R(n)的命令是:
>> x=R(-2,3,-10,10);
>> n=-10:10;
>> stem(n,x)
图像为:
d)命令如下:
>> n=-10:0.1:10;
>> y=2*sin(0.3*pi*n)+0.5*cos(2*(0.6*pi*n)); >> stem(n,y)
图像为:
(2)
a)
相加:δ(n)+2u(n-5) 命令如下:
>> n=-10:10;
>> y1=delta(0,-10,10); >> y2=2*u(5,-10,10); >> stem(n,y1+y2)
图像为:
乘法:2u(n-5)*R(n) 命令如下:
>> n=-10:10;
>> y1=u(0,-10,10); >> y2=R(-2,3,-10,10); >> stem(n,y1.*y2)
图像为:
移位:y(n)=2sin(0.3πn)+0.5cos2(0.6πn)右移两位命令如下:
>> n=-10:0.1:10;
>> y=2*sin(0.3*pi*(n-2))+0.5*cos(2*(0.6*pi*(n-2))); >> stem(n,y)
图像为:
b)音频处理:
>> [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.7*x+0.3*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');
//此时的录音是用audition录的,也可以用matlab自带的wavrecord函数来录音。
图像为:。