通信原理课程设计2ASK信号的仿真设计.docx
《通信原理课程设计2ASK信号的仿真设计.docx》由会员分享,可在线阅读,更多相关《通信原理课程设计2ASK信号的仿真设计.docx(10页珍藏版)》请在冰豆网上搜索。
通信原理课程设计2ASK信号的仿真设计
通信原理课程设计--2ASK信号的仿真设计
课程设计
课程设计名称:
通信原理课程设计
专业班级:
学生姓名:
学号:
指导教师:
课程设计时间:
通信原理专业课程设计任务书
学生姓名
专业班级
学号
题目
2ASK信号的仿真设计
课题性质
仿真
课题来源
自拟课题
指导教师
同组姓名
主要内容
1.设计一个2ask信号;
2.绘2ASK信号的频谱。
任务要求
1.生成2ask的信号,并把图像画出,以及做出他二进制序列;
2.绘制其功率谱密度图像;
3.分析功率谱。
参考文献
[1]宋祖顺.现代通信原理.北京:
电子工业出版社,2001
[2]樊昌信.通信原理(第五版).北京:
国防工业出版社,2001
[3]张志涌.精通MATLABR2011a.北京航空航天大学出版社,2011
[4]吴大正.信号与线性系统分析(第4版).高等教育出版社,2005。
[5]李建新,《现代通信系统分析与仿真-MATLAB通信工具箱》西安电子科技大学出版社。
审查意见
指导教师签字:
教研室主任签字:
年月日
1需求分析
生成一系列信号是s(t),通过自己设定的某一载频,将其变换成调制信号signal,将信号图像显示。
以调制信号为分析对象,对信号进行频谱分析,结果输出信号的功率谱密度图。
2概要设计
(1)学会MATLAB的使用,掌握MATLAB的程序设计方法。
(2)掌握数字信号处理的基本概念、基本理论和基本方法。
(3)掌握功率谱的计算;
(4)学会用MATLAB对信号进行分析和处理。
3运行环境
软:
Matlab7.1
硬:
计算机
4开发工具和编程语言
Matlab7.1
5详细设计
详细设计里面只介绍各个变量的意思,和自己不太熟悉的函数及公式,没有将所有的源代码写出。
主要调用的公式:
function[f,sf]=Fun1(t,st)
dt=t
(2)-t
(1);%时间距
T=t(end);%时间总长
df=1/T;%频率间隔
N=length(t);%间隔个数
f=[-N/2:
N/2-1]*df;%求出f频率的向量形式
sf=fft(st);%快速傅里叶变换
sf=T/N*fftshift(sf);%线性搬移
信号功率谱密度
的线性搬移,和快速傅里叶变换。
function[out]=Fun2(d,M)
N=length(d);
out=zeros(1,M*N);
Fori=0:
N-1;
out(i*M+1)=d(i+1);
End
生成不归零码的预处理,先生成一个dd向量其中很多的0,是为了卷积的时候产生很多连起来的幅值一样的不归零码。
f%载波频率2Hz
N%码元数
Ts设置波特率%1Band/s
Dt%波形采样间隔
d=sign(randn(1,N));%随机产生d其中的的元素是-1和1
gt%单极性NRZ波形
signal=conv(dd,gt);%卷积生成NRZ码,如果在这里直接随机生成则使出现过多的0、1交替,图形看着不好看
[f,signalf]=Fun1(t,signal(1:
length(t)));
signalf(signalf==0)=10^(-8);%避免log(0)的情况,令log(0)=10^(-8)将0设置成一个很小的正数
plot(f,10*log10(abs(signalf).^2/T));%根据功率谱密度函数的公式,画出不归零码功率谱密度图像。
ht=cos(2*pi*f*t);%载波信号
Dask=signal(1:
Lt).*ht;%2ask信号
[f,Daskf]=Fun1(t,Dask);
plot(f,10*log10(abs(Daskf).^2/T));%根据功率谱密度函数的公式,画出2ask的功率谱密度图像。
6调试分析
1.设计时首先遇到很多函数和细节性的规则不会使用,在老师的帮助下,以及参考网上的代码,搞懂了不少以前学过的matlab的知识。
2.除去知识性问题外,首先遇到原始信号的生成问题。
一开始想自己设定一个向量如g[101111...],直接自己写出,但是这样的写法不具有一般性,遂参考网上的随机生成法,通过卷积和Fun2函数生成signal即不归零码。
3.一开始没有考虑到log(0)的情况,一直提示错误,结果通过help产找到需将0设置为小的正数。
4.随后的问题是函数的公式,转换基本上照应着书上的例子:
如.*和.^都是很基本的运算,以及生成全1向量的ones和全零的zeros。
5.图像的绘制,出现了信号的顶层顶着图像的最高处,这样观察的时候不够清晰明了,遂查找资料,自己没有使用axis函数,之后定义完以后就可以清晰的看到图像了,另外还需注意绘制多个图像时figure(n)必不可少,但是figure
(1)不能写!
6.其余的调试都是细节错误,都在仔细的检查后消除了。
7测试结果
本图是信号的时域波形
第一幅图是输入信号,第二幅是2ask信号2ASK信号可表示为
,式中
为载波角频率,h(t)=cos
(t)为载波信号,二进制基带信号s(t)为随机的单极性NRZ矩形脉冲序列
这两幅图分别是其概率密度谱。
为第一个图的公式
为第二个图的公式
参考文献
[1]宋祖顺.现代通信原理.北京:
电子工业出版社,2001
[2]樊昌信.通信原理(第五版).北京:
国防工业出版社,2001
[3]张志涌.精通MATLABR2011a.北京航空航天大学出版社,2011
[4]吴大正.信号与线性系统分析(第4版).高等教育出版社,2005。
[5]李建新,《现代通信系统分析与仿真-MATLAB通信工具箱》西安电子科技大学出版社。
心得体会
没想到一开学就有课程设计,做的比较慌张,可能是由于准备考研的缘吧,此次课程设计,感触颇深,因为让我再一次的认识到了MATLA的强功能,同时时也对通信方面的信号处理等知识有了进一步的加深。
选择2ask的设计,这个题目比较简单,说实话自己对其他的题目实在没有把握,其实2ask、2psk、2fsk有着极其相似之处,它们是将幅值、相位、频率作为区分不归零码中的0、1,调制时,如果用离散傅里叶变换先对调制信号进行分析,然后再判断不同频率对应的幅值是否满足一定条件,进而判断出该位的数字逻辑,就可以很轻松的实现对信号的解调。
此次的实践,还巩固了傅里叶变换把信号从时域转换到频域,这样既能在时域上分析也能在频域上分析。
对于时间离散的信号,信号是用序列表示的,相应的有离散的傅里叶变换算法,经过变换后的结果也是一个序列。
此次的实践得到不少的教训,许多的函数都不会,连程序都是从网上的例子参考而来,自己的实践还是太少。
获得的东西也不少,比如随机的序列和频谱的绘制,以及简单的matlab的运算符号。
MATLAB的功能还需进一步学习,同时也要加强通信方面相关知识的学习。
感谢老师在实践中的指导,多次帮我解决问题,以后还需要注重实践!
程序代码:
f=2;%载波频率2Hz
N_sample=10;
N=200;%码元数
Ts=1;%1Band/s
dt=Ts/f/N_sample;%波形采样间隔
t=0:
dt:
N*Ts-dt;
Lt=length(t);
T=t(end);
%产生二进制信源
d=sign(randn(1,N));
[dd]=Fun2((d+1)/2,f*N_sample);
gt=ones(1,f*N_sample);%单极性NRZ波形
%输入单极性NRZ信号波形
subplot(2,2,1);
signal=conv(dd,gt);
plot(t,signal(1:
length(t)));
axis([010-0.21.2]);
xlabel('t');
ylabel('输入信号');
%输入信号功率谱密度波形
subplot(2,2,2);
[f,signalf]=Fun1(t,signal(1:
length(t)));
signalf(signalf==0)=10^(-8);%避免log(0)的情况,令log(0)=10^(-8)
plot(f,10*log10(abs(signalf).^2/T));
axis([-22-5010]);
xlabel('f');
ylabel('输入信号功率谱密度(dB/Hz)');
%2ASK信号
ht=cos(2*pi*f*t);%载波信号
Dask=signal(1:
Lt).*ht;%2ask信号
subplot(2,2,3);
plot(t,Dask);
axis([010-1.21.2]);
xlabel('t');
ylabel('2ask波形');
%2ask信号功率谱密度波形
[f,Daskf]=Fun1(t,Dask);
subplot(2,2,4);
plot(f,10*log10(abs(Daskf).^2/T));
xlabel('f');
ylabel('2ask功率谱密度');
axis([-1010-10020]);
两个函数:
function[f,sf]=Fun1(t,st)
dt=t
(2)-t
(1);
T=t(end);
df=1/T;
N=length(t);
f=[-N/2:
N/2-1]*df;
sf=fft(st);
sf=T/N*fftshift(sf);
function[out]=Fun2(d,M)
N=length(d);
out=zeros(1,M*N);
fori=0:
N-1;
out(i*M+1)=d(i+1);