%- 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,基带