%-appendanarbitrarystartsymbol(letitbe0,thatworksforall
%valuesofbits_per_symbol)(notethatthisisdoneusingavertical
%concatenation[x;y]ofarowofzeroswiththecarriermatrix,sweet!)
%-performmoduloNadditionbetweensymbol(n)andsymbol(n-1)togetthe
%codedvalueofsymbol(n)
%-forexample:
%bits_per_symbol=2(modulo4)
%symbolstream=321023
%startsymbol=0
%codedsymbols=0+3=3
%3+2=11=1
%1+1=2
%2+0=2
%2+2=10=0
%0+3=3
%
%
codedstream=0312203
%---------------------------------------
%---------------------------------------------%
%QDPSK 调制+%
%---------------------------------------------%
carrier_matrix=[zeros(1,carrier_count);carrier_matrix];%添加一个差分调制的初始相位,为 0
fori=2:(symbols_per_carrier+1)
carrier_matrix(i,:)=rem(carrier_matrix(i,:)+carrier_matrix(i-1,:),2^bits_per_symbol);%差分调制(rem 除后取余)+
end
%---------------------------------------
%Convertthedifferentialcodingintoaphase
%-eachphaserepresentsadifferentstateofthesymbol
%-forexample:
%bits_per_symbol=2(modulo4)
%symbols=0321
%phases=
%0*2pi/4=0(0degrees)
%3*2pi/4=3pi/2(270degrees)
%2*2pi/4=pi(180degrees)
%1*2pi/4=pi/2(90degrees)
%---------------------------------------
carrier_matrix=carrier_matrix*((2*pi)/(2^bits_per_symbol));%产生差分相位
%---------------------------------------
%Convertthephasetoacomplexnumber
%-eachsymbolisgivenamagnitudeof1togoalongwithitsphase
%(viatheones(r,c)function)
%-itisthenconvertedfrompolartocartesian(complex)form