%%dpsk格雷码矩形
%%等效基带调制
clc;
clear all;
close all;%%关闭所有窗口,比如之前画的图
nsymbol = 1e6;%%每种信噪比下符号数的发送符号数,10^6个数errornumber = zeros(1,10);
errorratio = zeros(1,10);
dataa = randi([0,1],1,2*nsymbol);%%产生1行,2*nsymbol列均匀分布的随机数datab = zeros(1,2*nsymbol);
data_mod1 = zeros(1,nsymbol);%%各参量初始化
data_mod2 = zeros(1,nsymbol);
data_demod1 = zeros(1,nsymbol);
data_demod2 = zeros(1,nsymbol);
s_receive1 = zeros(1,nsymbol);
s_receive2 = zeros(1,nsymbol);
datab_receive = zeros(1,2*nsymbol);
dataa_receive = zeros(1,2*nsymbol);
datab(1) = xor(0,dataa(1));%%给定初始相位
for l = 2:(2*nsymbol)%%逻辑运算
datab(l) = xor(dataa(l),datab(l-1));
end
for i = 1:nsymbol %%格雷码调制到星座图的映射
if datab(2*i-1)==0 && datab(2*i)==0
data_mod1(i) = 1;
data_mod2(i) = 1;
elseif datab(2*i-1)==0 && datab(2*i)==1
data_mod1(i) = -1;
data_mod2(i) = 1;
elseif datab(2*i-1)==1 && datab(2*i)==1
data_mod1(i) = -1;
data_mod2(i) = -1;
elseif datab(2*i-1)==1 && datab(2*i)==0
data_mod1(i) = 1;
data_mod2(i) = -1;
end
end
SNR_dB = 1:10;%%%信噪比dB形式
SNR = 10.^(SNR_dB/10);%%信噪比转化为线性值
for loop= 1:10
sigma = sqrt(1/SNR(loop));%%%根据符号功率求噪声功率