实验1多种离散信号产生.docx
《实验1多种离散信号产生.docx》由会员分享,可在线阅读,更多相关《实验1多种离散信号产生.docx(16页珍藏版)》请在冰豆网上搜索。
实验1多种离散信号产生
电子科技大学
实验报告
学生姓名:
学号:
指导教师:
一、实验室名称:
数字信号处理实验室
二、实验项目名称:
多种离散时间信号的产生
三、实验原理:
1、基本离散时间信号
利用MATLAB强大的数值处理工具来实现信号的分析和处理,首先就是要学会应用MATLAB函数来构成信号。
常见的基本信号可以简要归纳如下:
(1).单位采样序列
在MATLAB中可以利用zeros()函数实现。
如果
在时间轴上延迟了k个单位,得到
即:
(2).单位阶跃序列
在MATLAB中可以利用ones()函数实现。
(3).正弦序列
采用MATLAB的实现方法,如:
(4).实指数序列
其中,A、a为实数。
采用MATLAB的实现方法,如:
(5).复指数序列
采用MATLAB的实现方法,如:
为了画出复数信号x[n],必须要分别画出实部和虚部,或者幅值和相角。
MATLAB函数real、imag、abs和angle可以逐次计算出一个复数向量的这些函数。
2、基本数字调制信号
(1).二进制振幅键控(2ASK)
最简单的数字调制技术是振幅键控(ASK),即二进制信息信号直接调制模拟载波的振幅。
二进制幅度键控信号的时域表达式:
其中,an为要调制的二进制信号,g(t)是单极性脉冲信号的时间波形,Ts表示调制的信号间隔。
典型波形如下:
图1–1二进制振幅键控信号时间波形
(2).二进制频移键控(2FSK)
在二进制数字调制中,若正弦载波的频率随二进制基带信号在f1和f2两个频率点间变化,则产生二进制移频键控信号(2FSK信号)。
二进制频域键控已调信号的时域表达式为:
这里,
,
。
典型波形如下:
图1–2二进制频移键控信号时间波形
(3).二进制相移键控(2PSK或BPSK)
在二进制数字调制中,当正弦载波的相位随二进制数字基带信号离散变化时,则产生二进制移相键控(2PSK)信号。
通常用已调信号载波的0°和180°分别表示二进制数字基带信号的1和0。
二进制移相键控信号的时域表达式为:
典型波形如下:
图1–3二进制相移键控信号时间波形
数字调制信号可以根据调制原理采用基本的MATLAB命令实现,也可以用现成的命令:
Y=DMOD(X,Fc,Fd,Fs,METHOD...),其中,X为要调制的二进制信号;Fc为载波频率(Hz);Fd为符号频率(Hz);Fs为采样频率。
要求:
Fs>Fc,同时Fs/Fd是一个正整数。
参数METHOD是可以选择的调制方式:
ask、psk、qask、fsk、msk等。
3、双音多频DTMF信号
DTMF(DoubleToneMulitiFrequency,双音多频)作为实现电话号码快速可靠传输的一种技术,它具有很强的抗干扰能力和较高的传输速度,因此,可广泛用于电话通信系统中。
但绝大部分是用作电话的音频拨号。
另外,它也可以在数据通信系统中广泛地用来实现各种数据流和语音等信息的远程传输。
DTMF是用两个特定的单音频组合信号来代表数字信号以实现其功能的一种编码技术。
两个单音频的频率不同,代表的数字或实现的功能也不同。
这种电话机中通常有16个按键,其中有10个数字键0~9和6个功能键*、#、A、B、C、D。
由于按照组合原理,一般应有8种不同的单音频信号。
因此可采用的频率也有8种,故称之为多频,又因它采用从8种频率中任意抽出2种进行组合来进行编码,所以又称之为“8中取2”的编码技术。
根据CCITT的建议,国际上采用的多种频率为697Hz、770Hz、852Hz、941Hz、1209Hz、1336Hz、1477Hz和1633Hz等8种。
用这8种频率可形成16种不同的组合,从而代表16种不同的数字或功能键,具体组合见表1-1。
表1-1双音多频的组合功能
高频群Hz
功能
低频群Hz
1209
1336
1477
1633
697
1
2
3
A
770
4
5
6
B
852
7
8
9
C
941
*
0
#
D
因此,DTMF信号可以看作两个有限长度的正弦序列相加,正弦信号的频率由按键数字或字母符号对应的频率决定。
如,数字“8”由行频852Hz和列频1336Hz决定。
四、实验目的:
1、掌握几种基本的离散时间信号(包括单位采样序列,单位阶跃序列,单频正弦序列,单频复指数序列,实指数序列等)。
2、能够熟练利用MATLAB产生这些基本的离散时间信号。
3、理解双音多频DTMF信号、ASK、FSK、BPSK等信号的产生原理。
4、学习并运用MATLAB产生各种通信中的调制信号及双音多频信号。
五、实验内容:
1、对几种基本离散时间信号(包括单位采样序列,单位阶跃序列,正弦序列,复指数序列,实指数序列等)在MATLAB中编程产生。
2、(拓展要求)利用MATLAB编程产生2ASK,2FSK,2PSK等数字调制信号。
3、(拓展要求)利用MATLAB编程产生理解双音多频DTFM信号。
4、(拓展要求)利用MATLAB编程产生高斯白噪声序列。
5、(拓展要求)利用MATLAB中的谱分析函数对正弦信号的频谱进行分析。
6、通过硬件(DSP)实验箱演示上述信号的时域(示波器)波形与频域波形(计算结果)。
六、实验器材(设备、元器件):
安装MATLAB软件的PC机一台,DSP实验演示系统一套。
七、实验步骤:
1、在
内,画出单位下列信号:
(a).单位采样序列
和单位阶跃序列
的时域波形图。
(b).
、
的波形。
说明
与
、
与
之间的关系。
2、画出下列信号在
内的波形。
观察
是否周期信号。
如果是周期信号,信号的基波周期是什么?
如果不是周期信号,说明原因。
3、在
内,画出下列信号:
对于复数序列,要求分别画出实部和虚部;幅值和相角。
若把
中的底数0.8分别改为1.2、-0.8,讨论产生的时域波形有何变化。
总结指数序列的底数对序列变化的影响。
4、(拓展要求)设计产生数字二进制序列:
101010的2ASK、2FSK、2PSK调制信号。
已知符号速率Fd=10Hz(即时间间隔Ts为0.1),输出信号的采样频率为20Hz。
(a).2ASK信号的载波频率Fc=5Hz,
(b).2FSK信号载波1频率F1=5Hz,载波2频率F2=1Hz。
(c).2PSK载波频率Fc=1Hz。
分别画出以上信号调制前后的时域波形图。
5、(拓展要求)利用MATLAB产生DTMF双音多频信号。
画出数字“0”的时域波形图。
6、(拓展要求)MATLAB函数randn(1,N)可以产生均值为0,方差为1的高斯随机序列,也就是白噪声序列。
试利用randn函数产生均值为0.15,方差为0.1的高斯白噪声序列
,要求序列时域范围为
。
画出时域波形图。
同时将实验步骤2中产生的信号
与
相加,将得到的波形与
的波形做比较。
7、(拓展要求)利用MATLAB中的谱分析函数画出
的频谱。
与理论上根据傅立叶变换的定义计算出的
的频谱进行比较。
8、通过硬件(DSP)实验箱演示上述信号的时域(示波器)波形与频域波形(计算结果)。
八、实验数据及结果分析:
注:
本次实验在寝室电脑上完成,所用MATLAB版本为MATLABR2010b
程序:
(1)产生
序列的程序
产生
,
,
,
的程序:
N=41;
n=-20:
20;
%x1[n]
x1=zeros(1,N);
x1(21)=1;
figure,stem(n,x1)
xlabel('n'),ylabel('x1[n]')
%x2[n]
x2=[zeros(1,20)ones(1,21)];
figure,stem(n,x2)
xlabel('n'),ylabel('x2[n]')
%y1[n]
y1=[x1(1+5:
length(x1)),zeros(1,5)];
figure,stem(n,y1)
xlabel('n'),ylabel('y1[n]')
%y2[n]
y2=[zeros(1,8),x2(1:
length(x2)-8)];
figure,stem(n,y2)
xlabel('n'),ylabel('y2[n]')
figure,subplot(2,1,1),stem(n,x1),xlabel('n'),ylabel('x1[n]')
subplot(2,1,2),stem(n,y1),xlabel('n'),ylabel('y1[n]')
figure,subplot(2,1,1),stem(n,x2),xlabel('n'),ylabel('x2[n]')
subplot(2,1,2),stem(n,y2),xlabel('n'),ylabel('y2[n]')
产生
的程序:
n=0:
100;
%x3[n]
x3=sin(pi*n/16);
figure
(1),stem(n,x3)
xlabel('n'),ylabel('x3')
%x4[n]
x4=sin(n/2);
figure
(2),stem(n,x4)
xlabel('n'),ylabel('x4')
%x5[n]
x5=cos(pi*n/12)+cos(3*pi*n/8);
figure(3),stem(n,x5)
xlabel('n'),ylabel('x5')
(2)产生2ASK、2FSK、2PSK调制信号的程序(拓展要求)
2ASK
closeall
clc,clearall
%信源
an=[101010];
Fd=10;%符号速率
Ts=1/Fd;%符号时间间隔
t=linspace(0,Ts*length(an)-0.001,600);
symbol=[];
fori=1:
length(an)
ifan(i)==0
nextSymbol=zeros(1,100);
else
nextSymbol=ones(1,100);
end
symbol=[symbol,nextSymbol];
end
%载波
Fc=50;%载波频率说明:
这里比要求中的扩大了10倍
wc=2*pi*Fc;
carrySingal=cos(wc*t);
%2ASK调制
askSingal=symbol.*carrySingal;
%作图
subplot(211),plot(t,symbol),axis([00.7-22]),title('信源')%调制前时域波形图
subplot(212),plot(t,askSingal),axis([00.7-22]),title('2ASK信号')%调制后时域波形图
2FSK
closeall
clc,clearall
%信源
an=[101010];
Fd=10;%符号速率
Ts=1/Fd;%符号时间间隔
t=linspace(0,Ts*length(an)-0.001,600);
symbol=[];
fori=1:
length(an)
ifan(i)==0
nextSymbol=zeros(1,100);
else
nextSymbol=ones(1,100);
end
symbol=[symbol,nextSymbol];
end
%载波
F1=50;F2=10;%说明:
载波频率比要求中的扩大了10倍
w1=2*pi*F1;w2=2*pi*F2;
carry1=cos(w1*t);carry2=cos(w2*t);
%2FSK调制
fskSingal=symbol.*carry1+~symbol.*carry2;
%作图
subplot(211),plot(t,symbol),axis([00.7-22]),title('信源')%调制前时域波形图
subplot(212),plot(t,fskSingal),axis([00.7-22]),title('2FSK信号')%调制后时域波形图
2PSK
closeall
clc,clearall
%信源
an=[101010];
Fd=10;%符号速率
Ts=1/Fd;%符号时间间隔
t=linspace(0,Ts*length(an)-0.001,600);
symbol=[];
m=[];%消息信号
fori=1:
length(an)
ifan(i)==0
nextSymbol=zeros(1,100);
nextm=-ones(1,100);
else
nextSymbol=ones(1,100);
nextm=ones(1,100);
end
symbol=[symbol,nextSymbol];
m=[m,nextm];
end
%载波
Fc=10;%说明:
载波频率比要求的大10倍
wc=2*pi*Fc;
fai1=0;
fai0=pi;
fori=1:
length(m)
ifm(i)==0
carry(i)=cos(wc*t(i)+fai0);
else
carry(i)=cos(wc*t(i)+fai1);
end
end
%2PSK调制
pskSingal=m.*carry;
%作图
subplot(211),plot(t,symbol),axis([00.7-22]),title('信源')%调制前时域波形图
subplot(212),plot(t,pskSingal),axis([00.7-22]),title('2PSK信号')%调制后时域波形图
(3)产生DTMF信号的程序(拓展要求)
DTMF
%利用MATLAB产生DTMF双音多频信号。
画出数字“0”的时域波形图
clc,clear
f1=941;
f2=1336;
t=0:
0.01:
1.0;
m=sin(2*pi*f1*t)+sin(2*pi*f2*t);
plot(t,m)
(4)高斯白噪声序列的产生程序(扩展要求)
根据随机变量函数的分布性质生成均值为0.15,方差为0.1的高斯白噪声序列:
如果正态随机变量
,则其线性函数
也服从正态分布且
.
%白高斯噪声
n=0:
100;
x3=sin(pi*n/16);%原始信号
N=length(n);
mu=0.15;D=0.1;
x8=mu+sqrt(D)*randn(1,N);%均值为0.15,方差为0.1高斯白噪声
r=x3+x8;%叠加
%作图
subplot(3,1,1),plot(n,x3),title('原始信号x3=sin(pi*n/16)')
subplot(3,1,2),plot(n,x8),title('噪声n\simN(0.15,0.1)')
subplot(3,1,3),plot(n,r),title('受干扰信号')
注:
为了便于观察,这里用信号x3[n]而没用x2[n]。
(5)正弦信号频谱分析的程序(扩展要求)
%正弦信号谱分析
clc,clear
n=0:
100;
x3=sin(pi*n/16);
x4=sin(n/2);
x5=cos(pi*n/12)+cos(3*pi*n/8);
X3=abs(fft(x3));
X4=abs(fft(x4));
X5=abs(fft(x5));
subplot(3,2,1),plot(n,x3),title('x3=sin(pi*n/16)')
subplot(3,2,2),plot(n,X3),title('DFTofx3[n]')
subplot(3,2,3),plot(n,x4),title('x4=sin(n/2)')
subplot(3,2,4),plot(n,X4),title('DFTofx4[n]')
subplot(3,2,5),plot(n,x5),title('x5=cos(pi*n/12)+cos(3*pi*n/8))')
subplot(3,2,6),plot(n,X5),title('DFTofx5[n]')
结果:
(1)
的时域波形
:
:
:
:
:
:
:
:
:
实部:
虚部:
幅值:
相角:
(2)信号的时移:
与
、
与
之间的关系。
与
:
由
向左平移5个单位得到。
与
:
由
向右平移8个单位得到。
(2)正弦序列
周期的判断
是周期信号,信号的基波周期是32。
是周期信号,信号的基波周期是
。
是周期信号,信号的基波周期是48。
(3)指数序列底数与序列变化的关系总结
若把
中的底数0.8改为1.2,时域波形就呈现指数增长;若改为-0.8,就呈现振荡衰减,最后趋于0.
总结:
对形如
的序列,
若底数
的绝对值小于1,
若底数为正,时域波形呈指数衰减,幅值为正;
若底数为负,时域波形呈指数衰减,但是振荡的。
若底数
的绝对值大于1,
若底数为正,时域波形呈指数增长,幅值为正;
若底数为负,时域波形呈指数增长,但是振荡的。
(4)2ASK、2FSK、2PSK调制信号时域波形(拓展要求)
注:
学生觉得要求中载波频率太小,就把载波频率都扩大了10倍。
2ASK:
2FSK:
2PSK:
(5)数字“0”DTMF时域波形(拓展要求)
取样频率为100Hz
(6)高斯白噪声序列的时域波形;正弦序列加上高斯白噪声后的时域波形(扩展要求)
注:
为了观察方便,这里用信号x3[n]而没用x2[n]
(6)正弦序列的频谱图(扩展要求)
九、实验结论:
1.利用MATLAB的zeros()和ones(),等函数可以方便地产生各种基本的离散时间信号。
2.从MATLAB模拟调制的波形图看,2ASK调制中,码元1的已调波形即为载波幅度,而码元0无幅度,2FSK调制中码元1和0的已调波形频率不同,2PSK调制中码元1和0的已调波形初始相位不同,相差
。
3.双音多频信号可以看作是两个有限长度的正弦信号的叠加。
如数字“0”由行频941Hz和列频1336Hz决定。
十、总结及心得体会:
通过实验,练习了MATLAB的使用,练习了一些基本离散时间信号的生成,实现了3种模拟调制,结合实际运用了通信原理的一些知识,并了解双音多频DTMF信号的产生原理,既巩固了已学到的知识,又有不少新的收获,拓展了动手能力。
十一、对本实验过程及方法、手段的改进建议:
1.建议将模拟调制实验中的载波频率设置得大一些;
2.建议将实验内容4的原始信号设为正弦信号x3[n],这样更便于观察。
3.建议适当调整实验时间段,不要和考试时间段重合,让同学们有机会认真研究实验内容,并有时间和老师交流。
报告评分:
指导教师签字: