clc;
clear;
close all;
SYMBOLS = 8000; % 最大符号数
m=4; % 编码长度
SC = 2^m; % 子载波数(符号大小)
NM = 512; % 采样点数
h=1; % 调制阶数
w=floor(log2(factorial(m)/2)); % w=3
M=2^h; % MPSK调制
num_in=w+h*(m+1); % 输入的二进制序列8位
PAPR_orignal = zeros(1,SYMBOLS);
PAPR_rm = zeros(1,SYMBOLS);
x16_Power = zeros(1,NM*16);
x16_Power_rm = zeros(1,NM*16);
% % RM标准生成矩阵
% RM=zeros(m,2^m);
% for nx = 1:m
% RM(nx,:)=repmat( [zeros(1,2^(m-nx)) , ones(1,2^(m-nx))], 1, 2^(nx-1) );
% end
% % RM的陪集
% RMC
% [Ga,Gb] = wlanGolaySequence(len) % 格雷互补序列
G0=[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1];
G1=[0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1;
0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1;
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1;
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1];
G2=[0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1;
0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1;
0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1;
0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1;
0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1;
0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1];
Co=[1 0 0 1 0 1;
1 0 0 0 1 1;
0 1 0 0 1 1;
0 1 0 1 1 0;
0 0 1 1 1 0;
0 0 1 1 0 1;
1 1 0 0 0 1;
1 0 1 0 0 1];
G=[G0;G1;G2];
for nSymbol=1:SYMBOLS
X_seq=randi([0,M-1],1,num_in);
X = pskmod(X_seq,M); % MPSK调制
X_0=[X(1:(num_in+0)/2),zeros(1,NM-num_in),X((num_in+0)/2+1:num_in)];
x = ifft(X_0); % 傅里叶逆变换 时域
x_Power = abs(x.^2);
Peak_Power = max(x_Power);
Mean_Power = mean(x_Power);
PAPR_orignal(nSymbol) = 10*log10(Peak_Power./Mean_Power);
if nSymbol<=16
x16_Power((nSymbol-1)*NM+1 : nSymbol*NM) = x_Power;
end
d=bi2de(X_seq(1:w),'left-msb'); % 十进制信息符号
U=zeros(1,m+1);
for nu = 1:m+1
U(nu)=bi2de(X_seq(w+h*(nu-1)+1:w+h*nu),'left-msb');
end
blok=zeros(1,m+7);
blok(1:m+1)=U(1:m+1);
blok(m+2:m+7)=Co(d+1,:);
Bm=blok*G; % 格雷互补序列
XB=mod(Bm,M);
X_rm = pskmod(XB,M); % MPSK调制
X_rm=[X_rm(1:SC/2),zeros(1,NM-SC),X_rm(SC/2+1:SC)];
x_rm = ifft(X_rm); % 傅里叶逆变换 时域信号
% PAPR Compute 计算峰均比
x_Power_rm = abs(x_rm.^2);
Peak_Power_rm = max(x_Power_rm);
Mean_Power_rm = mean(x_Power_rm);
PAPR_rm(nSymbol) = 10*log10(Peak_Power_rm./Mean_Power_rm);
if nSymbol<=16
x16_Power_rm((nSymbol-1)*NM+1 : nSymbol*NM) = x_Power_rm;
end
end
figure(1)
x_sb=1:SYMBOLS;
plot(x_sb,PAPR_orignal,'.b',x_sb,PAPR_rm,'.r')
grid on
ylabel('PAPR0 [dB]')
title('格雷-RM编码法的PAPR比较')
legend('Orignal','Coding','Location','northeast')
figure(2)
[ccdf0, papr0] = ecdf(PAPR_orignal);
[ccdf1, papr1] = ecdf(PAPR_rm);
semilogy(papr0,1-ccdf0,'-b',...
papr1,1-ccdf1,'-r')
xlim([0 12])
grid on
xlabel({'PAPR0 [dB]';['m=4 ','h=1 ','BPSK']})
ylabel({'CCDF';'Pr_{PAPR>PAPR0}'} );
title('格雷-RM编码法的CCDF曲线比较')
legend('Orignal','Coding','Location','northeast')
figure(3)
x_16=1:NM*16;
plot(x_16,x16_Power,'b', x_16,x16_Power_rm,'r')
grid on
ylabel('P/W')
title('分组编码法的瞬时功率比较')
legend('Orignal','Coding','Location','northeast')
- 1
- 2
前往页