2008 年 8 月
电 脑 学 习
第 4 期
用 MATLAB 模拟实现数字信号的调制与频谱分析
杨 峰*
苏玉萍
余冬菊
摘 要 : 运用 MATLAB 语言模拟实现了数字信号的 ASK、FSK、PSK 调制与频谱分析。
键 词 : 数字信号
关
中图分类号: TP311.1
双极性非归零电平码
幅度键控
频移键控 相移键控 频谱分析
文献标识码: B 文章编号: 1002- 2422( 2008) 04- 0046- 02
Using MATLAB to Simulate Digital Signal Modulation and Spectr um Analysis
Yang Feng
Su Yuping
Yu Dongju
Abstr act: The paper uses MATLAB to simulate ASK、FSK、PSK modulation of digital signal and spectrum analysis.
Keywor d:
ASK FSK PSK Spectrum Analysis
Digital Signal
Bipolar Non- RZ- level Code
1 调制原理
1.1 双极性非归零电平码
叫做二进制调制。
1.2.1 2ASK 调制
双极性非归零电平码(Bipolar NRZ- L)是数字通信中
2ASK 调制是正弦载波的幅度随基带信号的变化而变
用来构造指令码和数据的一种基本码型,用正电平对应数
字″1″,等幅负电平对应数字“0”。采用 Bipolar NRZ- L 码
型。其中每一个数字“1”或“0”叫一个码元。这种码型抗干
扰能力较强,有利于在实际信道中传输。在程序设计中,规
定每个码元的抽样点数目为 N_sample,N_sample 是码元周
期,为简便起见程序中所产生的基带信号的正负电平幅度
都为“1”,并用 an 来表示。
1.2 调制方法
由于数字基带信号是二进制的,因此调制方法都可以
else
repeat with I:=1 to ChildCount
arr1 [I]:=CallObject (myobj,″GetAttributeValueByName″,″year″,″1,″
^String(I))
arr2 [I]:=CallObject (myobj,″GetAttributeValueByName″,″tmp″,″1,″
^String(I))
arr3 [I]:=CallObject(myobj,″GetAttributeValueByName″,″hum″,″1,″
^String(I))
arr4[I]:=CallObject(myobj,″GetText″,″1,″^String(I)^″,1″)
end repeat
end if
DeleteObject(myobj)
以下是创建文件并写入 XML 数据:方法是将原文档中
的数据读入到数组中,再重新写入该文件,最后添加新增节
点数据:
str:=WriteExtFile(FileLocation^″tea11.xml″,″″
^″\r″)
Str0:=AppendExtFile(FileLocation^″tea11.xml″,″″^″\r″)
Repeat with i:=1 to ChildCount
Str1:=AppendExtFile(FileLocation^″tea11.xml″,″″)
Str1:=AppendExtFile(FileLocation^″tea11.xml″,arr4[i])
Str1:=AppendExtFile(FileLocation^″tea11.xml″,″″^″\r″)
收稿日期:2007- 10- 06
* 杨峰 河南师范大学通信工程专业学生(新乡 453007)。
· 46 ·
化的数字调制,是最早出现的也是最简单的。抗噪声能力较
差,实际应用并不广泛,但可以作为其他调制方式的研究基
础。2ASK 信号的时域表达式为:e2ASK=bnbAcosω0t。式中 bn
为二进制数序列,当基带信号 an 为正电平时 bn 取“1”,当
基带信号 an 为负电平时 bn 取“0”,由 an 转化为 bn 的硬件
实现只需一个单向导通的二极管电路;A 为调制信号的幅
度;ω0 为调制信号的频率。显然,当基带信号为正电平(+
1)时,2ASK 时域信号为一正弦波;当基带信号为负电平(-
1)时,2ASK 时域信号对应为“0”。正弦载波频率要比基带
End repeat
Repeat with i:=1 to NewChildTotle
Str1:=AppendExtFile(FileLocation^″tea11.xml″,″″)
Str1:=AppendExtFile(FileLocation^″tea11.xml″,new4[I] )
Str1:=AppendExtFile(FileLocation^″tea11.xml″,″″^″\r″)
End repeat
Strn:=AppendExtFile(FileLocation^″tea11.xml″,″″^″\r″)
4 结束语
XML 可以提供对各种数据处理、构建、转换和查询技
术的访问,使得用户与应用程序之间数据交换更加容易;
XML 是可扩展的且与平台无关的,完全采用 Unicode 支持
国际化,正逐渐成为数据传输的主要介质,这对于 AW 等应
用程序来说可以在远程不同平台上获取 XML 数据,从某种
意义上说也使得 AW 的跨平台操作成为可能。
参考文献
[1] 石明贵. authorware6 标准教程[M]. 北京:北京希望电子
出版社,2002- 03.
[2] 宇风多媒体. authorware6 完全教程[M]. 北京:人民邮电
出版社,2002- 09.
[3] 耿祥义. XML 基础教程[M]. 北京:清华大学出版社,
2006- 04.
频率高的多得多,为了兼顾实际和视觉效果,在程序设计
中,使一个码元长度对应于正弦函数的五个周期,故设计程
序时频率设计为 ω0=5* 1/N_sample* 2π。
1.2.2 2FSK 调制
2FSK 是正弦载波的频率,随基带信号的变化而变化的
数字调制,时域表达式为:an=1 时,e2FSK=a* cosω1t;an=1 时
e2FSK=a* cosω2t。程序中设定基带信号为正电平时,对应于
高频正弦载波,基带信号为负电平时对应低频正弦载波。
同时考虑波形显示的实际性和简易性,设定“1”对应载波
10 个周期,“- 1”对应载波 5 个周期,故表达式中参数设置
为:ω1=10* 1/N_sample* 2π* 2,ω2=5;1/N_sample* 2π。
1.2.3
2PSK 调制
2PSK 是利用载波相位变化来传输信息的,通常用 0°
或 180°来表示基带信号的两种状态,时域表达式为:
an=1 时,e2PSK=an* cosω0t,an=- 1 时,e2PSK=an* cos(ω0t+π),
同样设定载波频率 ω0=5* 1/N_sample* 2π。
2 频谱分析
2.1 频谱计算
MATLAB 中的自带快速傅里叶变换函数 fft 为信号的
频谱分析提供了方便,其调用格式为:Y = fft(X),其中 X
为时域信号序列,Y 是 X 经过快速傅里叶变换后的序列。Y
值相当于序列傅里叶变换在 0- 2π 上的 N 个抽样值,其中
N 为序列长度。在正常采样的情况下,序列 Y 的前半部与后
半部分所含信息相同,分析时只需取出 Y 序列前半部分。
2.2 频谱分析
数字基带信号,如计算机输出的二进制序列,或来自模
拟信号经数字化处理后的 PCM 码组等。信号包含丰富的低
频分量及直流分量,不适合长距离传输。为达到通信的目
的,必须将低频的基带信号搬移到高频处,调制目的是实现
信号的搬移,以适合信道中的长距离传输。
3 程序实现
3.1 双极性非归零电平码的可视化
双极性非归零电平码(Bipolar NRZ- L)可视化程序设
计方法为:每一个码元显示由一定数目的“0”或“1”组成,
如绘制[0 1]序列,设置密集度为 5 的话,则 plot 命令绘制图
形参数为[- 1 - 1 - 1 - 1 - 1 1 1 1 1 1]。
function A=B_NRZ_L(a,N_sample)
%双极性非归零电平码的可视化
%a 为原码,N_sample 为抽样点数
n=length(a)V
b=find(a==0)V
a(b)=- 1V
pA=ones(1,N_sample)V
for i=1:n
A(N_sample;(i- 1)+1:i;N_sample)=a(i);pAV
end
mm=N_sample;nVt=1:mmV
subplot(211)VH1=plot(t,A)V
set(H1,'Linewidth' ,2)
axis([0 mm - 3.2 3.2])
title(' 双极性非归零电平码显示 ' ,'FontSize' ,8.0)
B=fft(A)Vnn=length(B)V
subplot(212)
H2=plot(1:nn/2,abs(B(1:nn/2)))V
title(' 基带信号频谱显示 ' ,'FontSize' ,8.0)
3.2 信号调制的程序实现
根据调制原理,将集中调制方式集成到一个函数中:
function p_2afpsk=m_2AFPSK(A,N_sample,choice)
%2ASK,2FSK,2PSK 调制集成
%A 原码经 B_NRZ_L 函数处理后 的 返 回 值 ,N_sample 是 抽 样 点
数,choice 是调制选择,
%1 代表 2ASK,2 代表 2FSK,3 代表 2PSK
% p_2afpsk 为已调信号
n=length(A)/N_sampleV
mm=length(A)V
t=1:mmV
if(choice==1)
p_2afpsk=(A+1)/2.;sin(1/N_sample;2;5;pi;t)V
%(A+1)/2 作用是将 A 变成 01 序列
elseif(choice==2)
p_2afpsk=sin(1/N_sample;5;2;pi;(((3+A)/2).;t))V
%(3+A)/2)作用是使得 1 对
elseif(choice==3)
loc=find(A==- 1)V A(loc)=0V B=ones(1,mm)V
p_2afpsk=sin(1/N_sample;5;2;pi;t+(A+B);pi)V
%使得相位作相应变化
end
subplot(211)
H1=plot(t,p_2afpsk,'b' )V
set(H1,'MarkerSize' ,4,'linewidth' ,1)V
axis([- 10 mm+10 - 2 2])V
title(' 调制信号波形显示 ' ,'FontSize' ,8.0)V
B=fft(p_2afpsk)V
nn=length(B)V
subplot(212)
H2=plot(1:nn/2,abs(B(1:nn/2)))V
title(' 调制信号频谱显示 ' ,'FontSize' ,8.0)
4 结束语
运用 MATLAB 语言实现了数字信号调制的模拟,并得
到基带信号和已调信号的频谱结构,所得的程序集成了时
域波形显示以及频谱显示。
参考文献
[1] 魏更宇,等. 通信导论[M]. 北京:北京邮电出版社,2005
- 01:41- 51.
[2] 张肃文. 高频电子线路[M]. 北京:高等教育出版社,20-
04- 11:457- 471.
[3] 孙祥,等. MATLAB7.0 基础教程[M]. 北京:清华大学出
版社,2005- 01:224- 325.
· 47 ·