基于MATLAB的FSK的仿真.docx
《基于MATLAB的FSK的仿真.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的FSK的仿真.docx(19页珍藏版)》请在冰点文库上搜索。
基于MATLAB的FSK的仿真
基于matlab环境下FSK的调制与解调的分析
王涛(学号:
200412110)
(物理与电子信息学院04级电子信息工程班,内蒙古呼和浩特010022)
指导教师:
刘美玲
摘要:
本文是基于matlab环境下对信号的调制与解调和误码率的分析,以及硬件实验与理论仿真实验的比较。
方法是通过matlab软件进行数学建模软件编程使模拟仿真成功,而硬件实验是利用现有实验设备进行实验分析。
根据二者在各个方面不同的特点,取长补短应用于教学之中。
关键词:
Matlab;环境;调制;解调;分析
中图分类号:
TN91文献标识码:
B
1引言
MATLAB是由MATHWORKS公司于1984年推出的一种面向科学与工程的计算软件,通过MATLAB和相关工具箱,工程师、科研人员、数学家和教育工作者可以在统一的平台下完成相应的科学计算工作。
MATLAB本身包含了600余个用于数学计算、统计和工程处理的函数,这样,就可以迅速完成科学计算任务而不必进行额外的开发。
业内领先的工具箱算法极大的扩展了MATLAB的应用领域,所以MATLAB自推出以来就受到广泛的关注。
MATLAB特点:
一,数值计算功能,在MATLAB中,每个数值元素都视为复数,而且只有双精度(64位)一种数据格式,省去多种的设置,虽然在运行速度和内存消耗方面付出了代价,却使MATLAB的编程大大简化。
MATLAB的数值计算基本功能包括:
矩阵运算、多项式和有理分式计算、数据统计分析以及数值分析等。
二,符号计算功能,在实际应用中,除了数值计算外,还需要得到方程的解析解,简化和展开多项式和函数表达,求解函数值等,所有这些均属于符号计算的领域。
三,便栈式的编程语言,与Fortran和C等高级语言相比,MATLAB的语法规则更简单,更贴近人的思维方式和表达习惯,使得编写程序就像在便栈上列写公式和演算一样。
四,强大而简易的作图功能,能根据输入数据自动确定坐标绘图。
五,高智能化,绘图时自动选择最佳坐标,大大方便了用户。
自动检测和显示程序错误,减轻编程和调试的工作量。
六,丰富实用的工具箱,MATLAB软件包括基本部分和扩展部分。
扩展部分成为工具箱。
工具箱分为两类:
功能性工具箱和学科性工具箱。
功能性工具箱主要用来扩充其符号计算功能,可视建摸仿真功能以及文字处理功能等。
学科性工具箱专业性比较强,如控制系统工具箱、信号处理工具箱、神经网络工具箱、最优化工具箱、金融工具箱、小波工具箱等。
MATLAB6.x的集成环境,在Windos桌面,双击MATLAB图标,系统就会进入MATLAB6.x的工作环境。
MATLAB6.x的集成环境由桌面平台以及组件组成。
它包括8个组成部分:
指令窗口、历史指令窗口、工作台及工具箱窗口、当前工作目录窗口、工作空间窗口、矩阵编辑器、程序编辑器和帮助浏览器。
MATLAB帮助系统,MATLAB为用户提供了三种帮助功能:
一.利用帮助菜单获取帮助信息。
单击MATLAB工作窗口的菜单栏Help菜单项,弹出帮助菜单项。
选择HelpWindow选项,可以打开MATLAB的主题窗口。
选择HelpDesk选项,可以打开MATLAB帮助工作台。
二.通过指令窗口获取帮助信息,用户可以在指令窗口直接键入帮助指令来获得帮助。
三.使用演示功能(Demo)。
MATLAB带有生动直观的演示程序,可以帮助用户形象直观地学习和理解MATLAB的使用方法和强大的功能。
启动演示程序有下面几种方法:
(一)在工作台和工具箱窗口中,列出了MATLAB和已经安装的各种工具箱。
单击欲学习的工具箱前面的“+”号,在打开的功能项中,双击Demos,即可打开演示程序。
(二)选择Help菜单Demos选项,可以打开MATLAB的演示窗口。
(三)在指令窗口中键入指令demo,同样可以打开MATLAB演示窗口。
2FSK在硬件实验下的分析
2.1FSK的硬件实验过程和结果
FSK的调制与解调的硬件实验是采用中国人民解放军理工大学研制的HD8611D型号的通信原理实验箱(如下图2-1所示)和双踪示波器共同完成的。
实验原理是:
传输信息中只有0,1两种代码,在调制时数字信息0对应载频w1,数字信息1对应载频w2,而且w1和w2的改变是瞬间的。
在解调时采用相干或非相干其中一种方法,然后再通过抽样判决器便可输出原始信息。
实验过程和结果是:
(1)通过clk电码32KHz的方波(如下图2-2所示)和16KHz的方波(如下图2-3所示)。
图2-1
图2-2图2-3
图2-4图2-5
图2-6图2-7
图2-8图2-9
图2-10图2-11
图2-12
(2)使两路信号通过D/A转换转变成32KHz的正弦波(如下图2-4所示)和16KHz的正弦波(如图2-5所示)。
(3)并且clk电码产生了调制信号1110010的随机信号(如下图2-6所示),产生了调制信号的反码(如下图2-7所示)。
(4)通过模拟开关和相加器进行调制,0对应载频是16KHz的正弦波,1对应载频是32KHz的正弦波,得到了调制后的信号(如下图2-8所示),以及输入解调系统信号(如下图2-9所示)。
将输入解调系统的信号展开,可以清晰地看到两个不同信息的码元频率不同(如下图2-10所示)。
(5)调制信号与解调电路的工作时钟(如上图2-11所示)同时输入4046锁相环解调和整形电路,调节电位器W903或W904和改变CA901的电容值,使得信号得到解调(如下图2-12所示)。
2.2FSK的硬件实验结果分析
通过上面的实验过程和结果与理论过程与结果对比分析,以上这个实验结果是比较准确的。
通过解调信号图2-12与调制信号图2-6的比较,二者波形相同就是存在一些时移,这是由于信号通过低通滤波器所造成的。
2.3FSK硬件实验的优劣
根据对硬件实验FSK的调制与解调的测量过程和结果分析,总结出了些硬件实验的优缺点如下:
优点:
(1)实验器材要求比较简单。
(2)通过实验操作,须亲自调试才得出实验结果,更容易巩固和加深对知识的理解。
(3)由于实验箱已经把实验电路集成,所以测量和调试比较简单。
缺点:
(1)调制信号和载频都已经被固定,没有随机性,说服力不强。
(2)实验设备不具有在课堂演示的功能。
(3)实验箱一旦发生故障,实验将不能进行。
3FSK在matlab环境下的分析
3.1FSK在matlab环境下过程与结果
FSK的模拟仿真是采用的matlab软件,其在电脑运行环境如图3-1所示。
实验过程是在窗口点击matlab快捷方式,使其运行,将FSK调制与解调的程序输入框中,点击回车即可运行,运行结果后面进行分析。
图3-1
在matlab环境下调制与解调的程序如下:
(百分号后为程序注释)
functionFSK
Fc=10;%载频
Fs=40;%系统采样频率
Fd=1;%码速率
N=Fs/Fd;
df=10;
numSymb=25;%进行仿真的信息代码个数
M=2;%进制数
SNRpBit=60;%信噪比
SNR=SNRpBit/log2(M);
seed=[1234554321];
numPlot=15;%产生25个二进制随机码
x=randsrc(numSymb,1,[0:
M-1]);%产生25个二进制随机码
figure
(1)
stem([0:
numPlot-1],x(1:
numPlot),'bx');
title('二进制随机序列')
xlabel('Time');
ylabel('Amplitude');%调制
y=dmod(x,Fc,Fd,Fs,'fsk',M,df);
numModPlot=numPlot*Fs;
t=[0:
numModPlot-1]./Fs;
figure
(2)
plot(t,y(1:
length(t)),'b-');
axis([min(t)max(t)-1.51.5]);
title('调制后的信号')
xlabel('Time');
ylabel('Amplitude');%在已调信号中加入高斯白噪声
randn('state',seed
(2));
y=awgn(y,SNR-10*log10(0.5)-10*log10(N),'measured',[],'dB');%在已调信号中加入高斯白噪声
figure(3)
plot(t,y(1:
length(t)),'b-');%画出经过信道的实际信号
axis([min(t)max(t)-1.51.5]);
title('加入高斯白噪声后的已调信号')
xlabel('Time');
ylabel('Amplitude');%相干解调
figure(4)
z1=ddemod(y,Fc,Fd,Fs,'fsk/eye',M,df);
title('相干解调后的信号的眼图')%带输出波形的相干M元频移键控解调
figure(5)
stem([0:
numPlot-1],x(1:
numPlot),'bx');
holdon;
stem([0:
numPlot-1],z1(1:
numPlot),'ro');
holdoff;
axis([0numPlot-0.51.5]);
title('相干解调后的信号原序列比较')
legend('原输入二进制随机序列','相干解调后的信号')
xlabel('Time');
ylabel('Amplitude');%非相干解调
figure(6)
z2=ddemod(y,Fc,Fd,Fs,'fsk/eye/noncoh',M,df);
title('非相干解调后的信号的眼图')%带输出波形的非相干M元频移键控解调
figure(7)
stem([0:
numPlot-1],x(1:
numPlot),'bx');
holdon;
stem([0:
numPlot-1],z2(1:
numPlot),'ro');
holdoff;
axis([0numPlot-0.51.5]);
title('非相干解调后的信号')
legend('原输入二进制随机序列','非相干解调后的信号')
xlabel('Time');
ylabel('Amplitude');%误码率统计
[errorSymratioSym]=symerr(x,z1);
figure(8)
simbasebandex([0:
1:
5]);
title('相干解调后误码率统计')
[errorSymratioSym]=symerr(x,z2);
figure(9)
simbasebandex([0:
1:
5]);
title('非相干解调后误码率统计')%滤除高斯白噪声
Delay=3;R=0.5;PropD=0;%滞后3s
程序的运行过程是:
首先产生25个随机序列码(如图3-2所示注:
此序列为随机序列,每一次运行程序所产生的序列都不同),然后通过调用函数对该序列进行调制(如图3-3所示)。
在调制信号中加入高斯白噪声(如图3-4所示)。
在通过调用函数让函数通过相干解调方式进行解调,解调信号(如图3-5所示)。
在通过调用函数让调制信号
图3-2图3-3
图3-4图3-5
通过非相干解调方式进行解调,解调信号(如图3-6所示)。
图3-7是相干解调后的误码率统计,图3-8是非相干解调的误码率统计。
图3-6图3-7
图3-8
(注释:
图3-7,图3-8中右上角的意思为,TheoreticalSER理论软件错误率;TheoreticalBER理论二进制误码率;SimulatedSER模拟软件错误率;SimulatedBER模拟二进制误码率。
)
3.2FSK在matlab环境下实验的优劣
优点:
(1)调制信号和载频都具有随机性,而且具有在课堂演示的功能。
(2)实验程序已经编好,不易发生故障,多会都可进行。
(3)进行了相干解调和非相干解调两种方式的比较,
(4)解调后对相干解调和非相干解调的误码率统计
缺点:
(1)不能通过实验操作调试出实验结果。
(2)前期编程和数学建模工作也比较复杂。
4教学中的应用
4.1教学中的使用范围
根据上面对FSK硬件实验与模拟仿真实验的对比,得出了在教学中的适用范围如下所述:
基于matlab的FSK的调制与解调模拟仿真实验应该应用于通信原理的课堂教学当中,因为当前多媒体教学已经逐步走进了大学课堂,所以完全有条件在课堂上为学生们演示调制与解调的全过程,这样可以把抽象的知识转化成比较现实的过程,使学生对这部分知识更容易理解。
而且在课堂上做这样的仿真实验,可以打破常规的单一的沉闷的课堂气氛,可以使学生有耳目一新的感觉。
FSK的调制与解调的硬件实验更适用于通信原理的实验课上,因为实验课是一个实际操作的过程,必须让学生充分了解信号从产生,到调制,再到解调的全过程。
而且还必须让学生知道现实的调制与解调的电路和模块到底是什么样的,每一个点的测量都必须由学生亲自调试,这样不仅可以使理论与实际相结合,而且可以增强学生的动手能力和巩固学生在课堂上所学的知识。
5总结
本篇论文是关于通信原理当中FSK的硬件实验与软件模拟仿真实验的对比。
首先则是对FSK的调制与解调理论知识进行深入学习,然后则是对不同的实验方法进行了理论上的研究,比如硬件实验中的实验箱原理、示波器正确使用方法和matlab的安装方法、基本编程方法。
通过对知识的系统学习,使自己具有该方面的技能,然后开始实验。
硬件实验主要是使用实验箱和示波器完成对每个点的测量,然后由该点的理论波形进行比较,比较的方法是首先判断所测波形是否正确,若不正确找出错误之处,若正确则分析实测波形与理论波形不是完全相同的原因。
软件模拟仿真实验则是先将实验目的按照各自不同的目的分成几小块,通过编程和在matlab环境中调试将其逐一实现,最终使得整个实验目的得到完成。
最后则是根据自己在做硬件实验和软件模拟仿真实验的心得体会、各自的特点,分析出它们的各自的长处,找出其在教学中的适用范围——具体范围简言之,则是软件模拟仿真实验用于课堂教学,硬件实验用于课后加强巩固知识训练,以促进教学相长,使我校的教学质量和办学水平得到有效提高。
参考文献
[1]著者:
樊昌信.书名:
通信原理[M].出版地:
北京市海淀区紫竹院南路23号出版社:
国防工业出版社,出版年:
2001年5月,起止页码:
133-137页.
[2]著者:
刘美玲.篇名:
FSK调制与解调[J].刊名:
通信原理实验讲义.出版年份2008-3-1
卷号(期号):
起止页码9-11页.
[3]著者:
张森张正亮.书名:
matlab仿真技术与应用实例教程[M].出版地:
北京市百万庄大街22号出版社:
机械工业出版社,出版年:
2004年1月,起止页码:
164-185页.
[4]著者:
WilliamH.TrangterK.SamShanmuganTheodreS.RappaportKurtL.Kosbar.书名:
通行系统仿真原理与无线应用[M].出版地:
北京市百万庄大街22号出版社:
机械工业出版社,出版年:
2005年6月,起止页码:
1-16页.
functionFSK
Fc=10; %载频
Fs=40; %系统采样频率
Fd=1; %码速率
N=Fs/Fd;
df=10;
numSymb=25;%进行仿真的信息代码个数
M=2; %进制数
SNRpBit=60;%信噪比
SNR=SNRpBit/log2(M);
seed=[1234554321];
numPlot=25;
%产生25个二进制随机码
x=randsrc(numSymb,1,[0:
M-1]);%产生25个二进制随机码
figure
(1)
stem([0:
numPlot-1],x(1:
numPlot),'bx');
title('二进制随机序列')
xlabel('Time');
ylabel('Amplitude');
%调制
y=dmod(x,Fc,Fd,Fs,'fsk',M,df);
numModPlot=numPlot*Fs;
t=[0:
numModPlot-1]./Fs;
figure
(2)
plot(t,y(1:
length(t)),'b-');
axis([min(t)max(t)-1.51.5]);
title('调制后的信号')
xlabel('Time');
ylabel('Amplitude');
%在已调信号中加入高斯白噪声
randn('state',seed
(2));
y=awgn(y,SNR-10*log10(0.5)-10*log10(N),'measured',[],'dB');%在已调信号中加入高斯白噪声
figure(3)
plot(t,y(1:
length(t)),'b-');%画出经过信道的实际信号
axis([min(t)max(t)-1.51.5]);
title('加入高斯白噪声后的已调信号')
xlabel('Time');
ylabel('Amplitude');
%相干解调
figure(4)
z1=ddemod(y,Fc,Fd,Fs,'fsk/eye',M,df);
title('相干解调后的信号的眼图')
%带输出波形的相干M元频移键控解调
figure(5)
stem([0:
numPlot-1],x(1:
numPlot),'bx');
holdon;
stem([0:
numPlot-1],z1(1:
numPlot),'ro');
holdoff;
axis([0numPlot-0.51.5]);
title('相干解调后的信号原序列比较')
legend('原输入二进制随机序列','相干解调后的信号')
xlabel('Time');
ylabel('Amplitude');
%非相干解调
figure(6)
z2=ddemod(y,Fc,Fd,Fs,'fsk/eye/noncoh',M,df);
title('非相干解调后的信号的眼图')
%带输出波形的非相干M元频移键控解调
figure(7)
stem([0:
numPlot-1],x(1:
numPlot),'bx');
holdon;
stem([0:
numPlot-1],z2(1:
numPlot),'ro');
holdoff;
axis([0numPlot-0.51.5]);
title('非相干解调后的信号')
legend('原输入二进制随机序列','非相干解调后的信号')
xlabel('Time');
ylabel('Amplitude');
%误码率统计
[errorSymratioSym]=symerr(x,z1);
figure(8)
simbasebandex([0:
1:
5]);
title('相干解调后误码率统计')
[errorSymratioSym]=symerr(x,z2);
figure(9)
simbasebandex([0:
1:
5]);
title('非相干解调后误码率统计')
%滤除高斯白噪声
Delay=3;R=0.5;PropD=0; %滞后3s
[yf,tf]=rcosine(Fd,Fs,'fir',R,Delay); %升余弦函数
[yo2,to2]=rcosflt(y,Fd,Fs,'filter',yf);
%加入高斯白噪声后的已调信号和经过升余弦滤波器后的已调信号
t=[0:
numModPlot-1]./Fs;
figure(10)
plot(t,y(1:
length(t)),'r-');
holdon;
plot(to2,yo2,'b-');
holdoff;
axis([030-1.51.5]);
xlabel('Time');
ylabel('Amplitude');
legend('加入高斯白噪声后的已调信号','经过升余弦滤波器后的已调信号')
title('升余弦滤波前后波形比较')
eyediagram(yo2,N);%眼图
title('加入高斯白噪声后的已调信号的眼图')