收藏 分销(赏)

2DPSK调制与解调matlab.doc

上传人:天**** 文档编号:2268662 上传时间:2024-05-24 格式:DOC 页数:4 大小:37.05KB 下载积分:5 金币
下载 相关 举报
2DPSK调制与解调matlab.doc_第1页
第1页 / 共4页
2DPSK调制与解调matlab.doc_第2页
第2页 / 共4页


点击查看更多>>
资源描述
%- 2DPSK 调制与解调 %--------------------------------------------------- %>>>>>>>>>>>>>>>>>>参数初始化>>>>>>>>>>>>>>>>>>>>> %--------------------------------------------------- fs = 3600000;%采样频率为36000赫兹 Time_Hold_On = 1/1200;%一个时钟周期为1200分之1,对应比特率为1200bps Num_Unit = fs * Time_Hold_On;%一个时钟周期内的采样点个数 High_Level = ones ( 1, Num_Unit );%高电平(全1序列) Low_Level = zeros ( 1, Num_Unit );%低电平(全0序列) w = 1800;%载波角频率1800Hz A = 1;%载波幅值 %--------------------------------------------------- %>>>>>>>>>>>>>>>>>>信号初始化>>>>>>>>>>>>>>> %--------------------------------------------------- Sign_Set = [0,1,1,0,1,0,0,1];%原始序列 Lenth_Of_Sign = length ( Sign_Set );%原始序列长度 Sign_Sett = ones(1,Lenth_Of_Sign+1);%差分变换后的序列,初始化为长度为原始序列长度+1的全1序列(第一个码元为1) sign_orign = zeros ( 1, Num_Unit * (Lenth_Of_Sign+1) );%初始化基带信号为全0序列 sign_result = zeros ( 1, Num_Unit * (Lenth_Of_Sign+1) );%初始化接收到的基带信号为全0序列 st = zeros ( 1, Num_Unit *( Lenth_Of_Sign+1) );%初始化调制后的信号为全0序列 t = 0 : 1/fs : Time_Hold_On * (Lenth_Of_Sign +1)- 1/fs;%信号采样时间点 result=zeros(1,Lenth_Of_Sign+1);%初始化接收到的序列 resultt=zeros(1,Lenth_Of_Sign);%初始化差分解调后的序列 %--------------------------------------------------- %>>>>>>>>>>>求差分编码>>>>>>>>>>>> %--------------------------------------------------- for I = 2 : Lenth_Of_Sign+1 %差分变换后的序列第一个值为1,从第2个开始计算 Sign_Sett(I)= xor(Sign_Sett(I-1),Sign_Set(I-1));%用异或运算求差分码 end %--------------------------------------------------- %>>>>>>>>>>>产生基带信号>>>>>>>>>>>> %--------------------------------------------------- for I = 1 : Lenth_Of_Sign+1 %考虑差分变换后序列中每一个值 if Sign_Sett(I) == 1 sign_orign( (I-1)*Num_Unit + 1 : I*Num_Unit) = High_Level; %序列值为1,基带信号为高电平 else sign_orign( (I-1)*Num_Unit + 1 : I*Num_Unit) = Low_Level; %序列值为0,基带信号为低电平 end end %--------------------------------------------------- %>>>>>>>>>>>>>>>>>>调制部分>>>>>>>>>>>>>>>>>> %--------------------------------------------------- for I = 1 : Lenth_Of_Sign+1 %考虑差分变换后序列中每一个值 if Sign_Sett(I) == 1 st( (I-1)*Num_Unit + 1 : I*Num_Unit) = A * cos ( 2 * pi * w * t( (I-1)*Num_Unit + 1 : I*Num_Unit ) + ( pi / 2 ) );%序列值为1,相位调制为π/2 else st( (I-1)*Num_Unit + 1 : I*Num_Unit) = A * cos ( 2 * pi * w * t( (I-1)*Num_Unit + 1 : I*Num_Unit ) );%序列值为0,相位调制为0 end end figure subplot ( 2,1,1 ) plot(t, sign_orign); axis( [ 0 , Time_Hold_On *( Lenth_Of_Sign + 2), - (A / 2), A + (A / 2) ] ); title ( '原始信号' ); grid %画出基带信号 subplot ( 2, 1, 2 ); plot ( t, st ); axis( [ 0 , Time_Hold_On *( Lenth_Of_Sign + 2), - 3*(A / 2), 3*(A / 2) ] ); title ( '调制后的信号' ); grid %画出相位调制后的信号 %--------------------------------------------------- %>>>>>>>>>>>>>>>>>>相干解调>>>>>>>>>>>>>>>>>>>>>>>>>>>>> %--------------------------------------------------- dt = st .* cos ( 2 * pi * w * t ); %相干相乘 figure plot ( t, dt ); axis( [ 0 , Time_Hold_On *( Lenth_Of_Sign + 2), - 3*(A / 2), 3*(A / 2) ] ); title ( '相干相乘后的波形' ); grid %--------------------------------------------------- %>>>>>>>>>>>>>>>>>>>低通滤波部分>>>>>>>>>>>>>>>>>>>> %--------------------------------------------------- [N,Wn] = buttord( 2*pi*1500, 2*pi*3400,3,25,'s'); %临界频率采用角频率表示,计算低通滤波器参数 [b,a]=butter(N,Wn,'s'); %产生N阶低通巴特沃斯滤波器 [bz,az]=impinvar(b,a,fs); %映射为数字的 dt = filter(bz,az,dt); %将相干相乘后的信号进行滤波 figure plot ( t, dt ); axis( [ 0 , Time_Hold_On *( Lenth_Of_Sign + 2), - 3*(A / 2), 3*(A / 2) ] ); title ( '低通滤波后的波形' ); grid %--------------------------------------------------- %>>>>>>>>>>>>>抽样判决 & 逆码变换部分>>>>>>>>>>>>>>> %--------------------------------------------------- for I = 1 : Lenth_Of_Sign+1 if dt((2*I-1)*Num_Unit/2) < 0.25 %在时钟周期中间采样,由于相干相乘后信号幅值变为1/2,所以判决门限为0.25 sign_result( (I-1)*Num_Unit + 1 : I*Num_Unit) = High_Level; else sign_result( (I-1)*Num_Unit + 1 : I*Num_Unit) = Low_Level; end %由于相干相乘后得到的信号变为原来的负数,所以进行逆码变换 end figure plot ( t, sign_result ); axis( [ 0 , Time_Hold_On *( Lenth_Of_Sign + 2), - 3*(A / 2), 3*(A / 2) ] ); title ( '逆码变换后的波形' ); grid %--------------------------------------------------- %>>>>>>>>>>>序列生成与差分还原>>>>>>>>>>>> %--------------------------------------------------- for I=1: Lenth_Of_Sign+1 result(I)=sign_result(I* Num_Unit)%将接收到的信号生成(差分)序列 end for I = 1 : Lenth_Of_Sign resultt(I)= xor(result(I),result(I+1)) %将接收到的差分序列还原为原序列 end window=boxcar(length(st)); %矩形窗   nfft=1024;   [Pxx,f]=periodogram(st,window,nfft,fs); %求功率谱密度 plot(f,10*log10(Pxx)); 
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 考试专区 > 中考

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服