基于matlab的fsk调制解调1.docx
- 文档编号:27235677
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:16
- 大小:126.80KB
基于matlab的fsk调制解调1.docx
《基于matlab的fsk调制解调1.docx》由会员分享,可在线阅读,更多相关《基于matlab的fsk调制解调1.docx(16页珍藏版)》请在冰豆网上搜索。
基于matlab的fsk调制解调1
基于MATLAB的FSK调制解调
学生姓名:
段斐指导老师:
吴志敏
摘要本课程设计利用MATLAB集成环境下的M文件,编写程序来实现FSK的调制解调,并绘制出解调前后的时域和频域波形及叠加噪声时解调前后的时频波形,并观察解调前后频谱有何变化以加深对FSK信号解调原理的理解。
对信号叠加噪声,并进行解调,绘制出解调前后信号的时频波形,改变噪声功率进行解调,根据运行结果和波形来分析该解调过程的正确性及信道对信号传输的影响。
完成整个FSK的调制解调过程。
程序开发平台为MATLAB7.1,使用其自带的M文件实现。
运行平台为Windows2000。
关键词:
程序设计;FSK;调制解调;MATLAB7.1;M文件
1引言
本课程设计是利用MATLAB集成环境下的M文件,编写程序来实现FSK的调制解调,并绘制出解调前后的时域和频域波形及叠加噪声时解调前后的时频波形,根据运行结果和波形来分析该解调过程的正确性及信道对信号传输的影响。
1.1课程设计目的
此次课程设计的目的是熟悉MATLAB中M文件的使用方法,编写M文件实现FSK的调制和解调,绘制出FSK信号解调前后在时域和频域中的波形,观察调解前后频谱的变化,再对信号进行噪声叠加后解调同样绘制解调前后的信号时频波形,最后改变噪声功率进行调解,分析噪声对信号传输造成的影响,加深对FSK信号解调原理的理解。
1.2课程设计要求
熟悉MATLAB中M文件的使用方法,并在掌握FSK调制解调原理的基础上,编写出FSK调制解调程序。
在M文件环境下运行程序绘制出FSK信号解调前后在时域和频域中的波形,观察波形在解调前后的变化,对其作出解释,同时对信号加入噪声后解调,得到解调后的时频波形,分析噪声对信号传输造成的影响。
解释所得到的结果。
1.3课程设计步骤
本课程设计采用M文件编写的方法实现二进制的FSK的调制与解调,然后在信号中叠加高斯白噪声。
一,调用dmode函数实现FSK的解调,并绘制出FSK信号调制前后在时域和频域中的波形,两者比较。
二,调用ddemod函数解调,绘制出FSK信号解调前后在时域和频域中的波形,两者比较。
三,调用awgn函数在新海中叠加不同信噪比的噪声,绘制在各种噪声下的时域频域图。
最后分析结果。
1.4设计平台简介
Matlab是美国MathWorks公司开发的用于概念设计,算法开发,建模仿真,实时实现的理想的集成环境。
是目前最好的科学计算类软件。
作为和Mathematica、Maple并列的三大数学软件。
其强项就是其强大的矩阵计算以及仿真能力。
Matlab的由来就是Matrix+Laboratory=Matlab,这个软件在国内也被称作《矩阵实验室》。
Matlab提供了自己的编译器:
全面兼容C++以及Fortran两大语言。
Matlab7.1于2005.9最新发布-完整版,提供了MATLAB,SIMULINK的升级以及其他最新的75个模块的升级。
7.1版本提高了产品质量,同时也提供了新的用于数据分析、大规模建模、固定点开发、编码等。
所以Matlab是工程师,科研工作者手上最好的语言,最好的工具和环境。
设计原理
2.1FSK基本原理
频移键控是利用载波的频率变化来传递数字信息。
在2FSK中载波的频率随二进制基带信号在f1和f2两个频率点间变化。
故其表达式为
e2fsk(t)=Acos(ω1t+φn)发送“1”时;e2fsk(t)=Acos(ω2t+θn)发送“0”时。
一个2FSK可以看成两个不同载频的2ASK信号的叠加。
因此2FSK信号时域表达式又可以写成
e2fsk(t)=[
ang(t-nTs)]cos(ω1t+φn)+[
ng(t-nTs)]cos(ω2+θn)(2-1)
式中:
g(t)为单个矩形脉冲,脉宽为Ts;an=1时,概率为P;an=0时,概率为1-P;
n是an的反码,若an=1,则
n=0;若若an=0,则
n=1,于是
n=1时,概率为1-P;
n=0时,概率为P;
Φn和θn分别是第n个信号码元(1或0)的初始相位。
在移频键控中Φn和θn不携带信息,通常和令Φn和θn为零。
因此2FSK信号表达式可简化为:
e2fsk(t)=s1(t)cosω1t+s2(t)cosω2t(2-2)
s1(t)=
ang(t-nTs)(2-3)
s2(t)=
ng(t-nTs)(2-4)
2.2FSK调制原理
在二进制频移键控中,幅度恒定不变的载波信号的频率随着输入码流的变化而切换(称为高音和低音,代表二进制的1和0)。
产生FSK信号最简单的方法是根据输入的数据比特是0还是1,在两个独立的振荡器中切换。
采用这种方法产生的波形在切换的时刻相位是不连续的,因此这种FSK信号称为不连续FSK信号。
)其实现如图一所示:
图2-1非连续相位FSK的调制方式
2.3FSK解调原理
对于FSK信号的解调方式很多:
相干解调、滤波非相干解调、正交相乘非相干解调。
而FSK的非相干解调一般采用滤波非相干解调,解调原理是将2FSK信号分为上下两路2ASK信号分别进行解调,然后判决,这里的抽样判决是直接比较两路信号抽样值的大小,可以不专门设置门限。
判决则应与调制规则相呼应,调制时若规定“1”符号为对应载波频率f1,则接受时上支路的样值大小,应判为“1”反之则判为“0”。
图2-22FSK信号非相干解调原理图
3仿真实现过程
3.1FSK信号的产生
调用domde函数实现FSK的调制:
y=dmod(x,Fc,Fd,Fs,'fsk',M,df);(3-1)
其中y为已调信号;x为调制信号;Fc=10为载波频率;Fs=40系统采样频率;Fd=1码元速率。
此程序输入的是二进制的FSK信号且为数字信号,所谓为连续的二进制图形如图三所示:
图3-1输入的二进制随即序列
对该信号进行频谱分析在M文件下得到了调制后的频域和时域图设定好各个的参数
图3-2调制后的信号图3-3调制后的频谱图
通过调制,从所得的图形可知输入的二进制随机信号没受到噪声干扰的时候是很规则的信号调制后的信号
FSK的解调
对调制好的FSK信号进行非相干解调。
输入的FSK中频信号分别经过中心频率为fH、fL的带通滤波器,然后分别经过包络检波,包络检波的输出在t=kTb。
时抽样(其中k为整数),并且将这些值进行比较。
根据包络检波器输出的大小,比较器判决数据比特是1还是0。
图3-4解调前后的频谱图比较
从所得到的结果来看,经过解调后,在没有噪声的干扰下,解调出来的信号在频谱上和原信号十分吻合,基本没有误差。
3.3叠加噪声的FSK解调
在信号中如果存在了不需要的电信号,我们称之为噪声。
而在通信系统中,我们一般需要处理的是高斯白噪声。
一般在物理上把它翻译成白噪声(whitenoise)。
白噪声是指功率谱密度在整个频域内均匀分布的噪声。
所有频率具有相同能量的随机噪声称为白噪声。
从我们耳朵的频率响应听起来它是非常明亮的“咝”声。
白噪声或白杂讯,是一种功率频谱密度为常数的随机信号或随机过程。
换句话说,此信号在各个频段上的功率是一样的,由于白光是由各种频率(颜色)的单色光混合而成,因而此信号的这种具有平坦功率谱的性质被称作是“白色的”,此信号也因此被称作白噪声。
相对的,其他不具有这一性质的噪声信号被称为有色噪声。
理想的白噪声具有无限带宽,因而其能量是无限大,这在现实世界是不可能存在的。
实际上,我们常常将有限带宽的平整讯号视为白噪音,因为这让我们在数学分析上更加方便。
然而,白噪声在数学处理上比较方便,因此它是系统分析的有力工具。
一般,只要一个噪声过程所具有的频谱宽度远远大于它所作用系统的带宽,并且在该带宽中其频谱密度基本上可以作为常数来考虑,就可以把它作为白噪声来处理。
我们要分析的是在加了高斯白噪声后的FSK信号。
调用awgn函数来实现给FSK信号的噪声叠加:
yl=awgn(y,20);(3-2)
yl为加了噪声后的信号,y为需要叠加噪声的信号。
调用前面已经产生的调制信号,我们设定噪声比为20,则可以得到加入噪声后的已调信号和原二进制随机序列的比较。
如图6所示
图3-5原始信号调制后信号和加入高斯白噪声后的已调信号比较
从图中可知,加入噪声之后信号的波动明显增大,幅度超出了“1”,“-1”的范围,信号的失真情况很明显,但对信号的波动没有很大的改变。
由此说明,叠加噪声之后信号传输效果会受到影响,但正确性不会改变。
图3-6调制后的频谱图
3-7加入高斯白噪声解调后的频谱图(snr=10)
3-8加入高斯白噪声解调后的频谱图(snr=3)
加入噪声后,信号的变化很明显。
改变噪声的大小:
当信噪比为10时,失真不是非常明显,与原波形基本上没大的变化。
当信噪比为3时,噪声大了之后对信号的影响非常大。
说明FSK信号具有一定的抗噪声能力。
图3-9加入噪声后非相干解调后信号
加入噪声后,对信号进行非相干解调,与原信号没有变化,任然能正确的解调出原始信号,这是因为虽然加入了噪声,但数字信号的抗噪性能较模拟信号而言更强。
并且我们取的数据组数有限,不能很好的反应其真实的抗噪能力。
通过上述的操作之后,信道中噪声对信号的传输有一定的影响,噪声越大影响越明显,掩盖了原始信号,所以我们在平常信号传输中,尽量减少信道中噪声的干扰,保证信号的传输效率。
4遇到问题及解决办法
4.1编程中问题解答
在此次课程实际过程中,碰到了很多的问题,而解决这些问题使我学得了很多的新知识,同时也重拾以前遗忘的知识,加深了对现有知识的巩固。
在同学们和老师的帮助下,将这些问题一一解决。
现将问题做如下总结。
首先是在编写程序时,虽然在网上找到了相关程序,但这些程序是网上程序员编写的,其中有许多的函数是我们的MATLAB虽然有,但是我们所谓涉及过的,因而无法读懂这些函数对其作出解释。
而我要做的是将这些函数变为自己现有的程序在MATLAB的函数库中现有的我们接触过的能自己组织语言描述的。
例如:
yl=awgn(y,SNR-10*log10(0.5)-10*log10(N),'measured',[],'dB');此函数在以前的课程中并未看到过,在问过老师之后,才真正明白其含义:
次句程序的意思就和我们的
yl=awgn(y,20);
一样,在信号中添加高斯白噪声,对于这一系列的函数和程序用语问题,不懂的经过老师和同学的解答,都得到了很好的解释。
也是我懂得在平时学习中不能只局限于课本知识,对于课后的各类文章也要去多多留意。
4.2程序解调过程中的问题
对于程序中做出FSK解调后的频谱图的程序我们可以单独作为一个M文件在MATLAB中运行,这样就减少了程序在各个M文件中存在的问题,同样也就较少了程序过于繁琐的问题。
对于矩阵n=[0:
1:
length(y)-1];w=[0:
1:
1000-1]*pi/500;)在没有用1000-1之前,程序一直运行有错误。
在请教了我们班的同学之后,按照矩阵乘法的规则第一个矩阵的列数要和第二个矩阵的行数相等,否则不能相乘。
所以在定义1000个点,与前一个矩阵相对应。
5结束语
在轻松和紧张气氛并存的机房中,度过了很多个日子。
终于完成了通信原理的课程设计在此我要谢谢在整个课程设计过程中帮助过的我老师和同学们,在同学们的详细讲解和不断指导下,使得我完成此次课程设计的过程相对较轻松,特别是周博同学,在自己还有课程设计需要完成时,抽出时间来,对我的整个程序做出了详细的讲解,在程序运行的过程中,帮我查找错误,努力思考,对每个错误存在的地方做了详细的讲解和更正。
同样,也要感谢吴老师,在此次课程设计过程中耐心的为我们的每个同学作辅导,关心每个同学的课程设计进程,对我们的提问都给出了详细和让每个人满意的答复。
最后通过自己的努力和大家的帮助,在这次的课程设计中我懂得了FSK的调制和解调原理,以及在MATLAB环境下运行的过程。
对各种情况下的时域和频域图形能做出合理的解释。
理解了加入高斯白噪声后信号的变化。
通过这些,我才能完成以上的课程设计文本文件。
同样,也锻炼了我的思维和动手能力。
为在以后的其余学习中打下了很好的基础。
参考文献
[1]黄文梅,熊桂林,杨勇.信号分析与处理—MATLAB语言及应用.长沙:
国防科技大学出版社,2000.
[2]樊昌信,曹丽娜.通信原理(第6版).北京:
国防工业出版社,2008,3.
[3]邓华.MATLAB通信仿真及应用实例详解.人民邮电出版社,2003.
[4]孙屹,李妍.MATLAB通信仿真开放手册.北京:
国防工业出版社,2005.
[5]郭文彬,桑林.通信原理——基于MATLAB的计算机仿真.北京:
北京邮电大学出版社,2006.
附录:
FSK调制解调程序清单
%程序名称:
demode.m
%程序功能:
调用函数demod实现FSK调制
%程序作者:
段斐
%最后修改时间:
2009-1-16
%=====================
程序代码
Fc=10;%载频
Fs=40;%系统采样频率
Fd=1;%码速率
N=Fs/Fd;
df=10;
numSymb=25;%进行仿真的信息代码个数
M=2;%进制数
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');
figure(3)
n=[0:
1:
length(y)-1];w=[0:
1:
1000-1]*pi/500;
yn=(y)';
Y=dtft(yn,n,w);magY=abs(Y);
plot(w/pi,magY);
title('调制后的频谱图')
xlabel('w');
ylabel('Y');
%程序名称:
ddemode.m
%程序功能:
调用函数ddemode实现FSK非相干解调
%程序作者:
段斐
%最后修改时间:
2009-1-16
%=====================
程序代码
z2=ddemod(y,Fc,Fd,Fs,'fsk/eye/noncoh',M,df);
figure
(1)
%带输出波形的非相干M元频移键控解调
subplot(2,1,1);
stem([0:
numPlot-1],x(1:
numPlot),'bx');
title('原输入二进制随机序列')
xlabel('Time');
ylabel('Amplitude');
subplot(2,1,2);
stem([0:
numPlot-1],z2(1:
numPlot),'ro');
XX文库-让每个人平等地提升自我title('非相干解调后的信号')
xlabel('Time');
ylabel('Amplitude');
%程序名称:
ddemode.m
%程序功能:
调用函数ddemode实现FSK加入噪声后的非相干解调
%程序作者:
段斐
%最后修改时间:
2009-1-16
%=====================
程序代码
%在已调信号中加入高斯白噪声
SNRpBit=60;%信噪比
SNR=SNRpBit/log2(M);
randn('state',seed
(2));
%yl=awgn(y,SNR-10*log10(0.5)-10*log10(N),'measured',[],'dB');%在已调信号中加入高斯白噪声
yl=awgn(y,20);
figure
(1)
subplot(2,1,1);stem([0:
numPlot-1],x(1:
numPlot),'bx');
title('二进制随机序列')
xlabel('Time');
ylabel('Amplitude');
subplot(2,1,2);plot(t,yl(1:
length(t)),'b-');%画出经过信道的实际信号
axis([min(t)max(t)-1.51.5]);
title('加入高斯白噪声后的已调信号')
xlabel('Time');
ylabel('Amplitude');
figure
(2)
n=[0:
1:
length(y)-1];w=[0:
1:
1000-1]*pi/500;
ynl=(yl)';
Yl=dtft(ynl,n,w);magYl=abs(Yl);
subplot(2,1,1);plot(w/pi,magY);
subplot(2,1,2);plot(w/pi,magYl);
%程序名称:
dtft.m
%程序功能:
实现时域和频域转换
%程序作者:
段斐
%最后修改时间:
2009-1-16
%=====================
程序代码
Function[X]=dtft(x,n,w)%定义参数
X=x*exp(-j*n’*w)%计算频域值
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 matlab fsk 调制 解调
![提示](https://static.bdocx.com/images/bang_tan.gif)