北邮数字信号处理上机实验一答案

实验一:数字信号的产生和基本运算(4学时)

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

(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.5cos2(0.6πn)

解题:

a)实现冲击信号自定义函数

function[x,y]=impseq(n0,n1,n2)
if((n0<n1)|(n0>n2)|(n1>n2))
    error('Arguments must satisfy n1<=n0<=n2')
end
n=[n1:n2];
x=[(n-n0)==0]

实现输出题目要求

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

b)自定义函数实现阶跃信号功能

function[x,n]=stepseq(n0,n1,n2)
if((n0<n1)|(n0>n2)|(n1>n2))
   error('Arguments must satisfy n1<=n0<=n2')
end
n=[n1:n2];
x=[(n-n0)>=0]

实现题目输出

x=2*stepseq(5,-10,10);
n=[-10:10];
stem(n,x)
图片[2]-常用数字信号序列的产生: 熟悉Matlab 产生数字信号的基本命令,加深对数字信号概念的理解,并能够用Matlab 产生和绘制出一些常用离散信号序列。请用Matlab 画出下列序列的波形(-10<n<1

c)实现举行序列自定义函数

function[x,n]=R(n0,n1,n2,n3)
if((n0<n2)||(n0>n1)||(n1>n3)||(n2>n3))
   error('Arguments must satisfy n0<=n1<=n2<=n3')
end
n=n2:n3;
x=(n>=n0)-(n>=n1);

实现题目要求

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

d)实现题目要求代码

n=-10:10;
y=2*sin(0.3*pi*n)+0.5*cos(0.6*pi*n);
stem(n,y)
图片[4]-常用数字信号序列的产生: 熟悉Matlab 产生数字信号的基本命令,加深对数字信号概念的理解,并能够用Matlab 产生和绘制出一些常用离散信号序列。请用Matlab 画出下列序列的波形(-10<n<1

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

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

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

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

解题:

基本运算:

生成上述四个基本序列并进行加减乘除等运算(重复操作,只列几个):

n=-10:10;
y1=impseq(0,-10,10);
y2=2*stepseq(5,-10,10);
y3=R(1,3,-10,10);
y4=2*sin(0.3*pi*n)+0.5*cos(0.6*pi*n);
subplot(3,2,1);stem(n,y1+y2);
subplot(3,2,2);stem(n,y1.*y3);
subplot(3,2,3);stem(n,y1./y4);
subplot(3,2,4);stem(n,y2-y3);
subplot(3,2,5);stem(n,y2+y4-2);
subplot(3,2,6);stem(n,y3+y4+6);
图片[5]-常用数字信号序列的产生: 熟悉Matlab 产生数字信号的基本命令,加深对数字信号概念的理解,并能够用Matlab 产生和绘制出一些常用离散信号序列。请用Matlab 画出下列序列的波形(-10<n<1

声音:

自行导入record和background

处理程序:

clear all;
[record,fs1]=audioread('record.aac');      %wav,acc等均可
[back,fs2]=audioread('leaf.mp3');          %同上
x=record((fs2*0|1:fs2*45),:);
y=back((fs2*0|1:fs2*45),:);
z=0.7*x+0.3*y;                    
audiowrite('test.wav',z,fs2);              %频率保持一致
subplot(3,1,1),plot(x),title('record');
subplot(3,1,2),plot(y),title('background');
subplot(3,1,3),plot(z),title('music');
图片[6]-常用数字信号序列的产生: 熟悉Matlab 产生数字信号的基本命令,加深对数字信号概念的理解,并能够用Matlab 产生和绘制出一些常用离散信号序列。请用Matlab 画出下列序列的波形(-10<n<1
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情