📄 slm_2_4.m
字号:
clear all
clc
hold on
%Parameter setting
fftn = 128; %FFT点数
CP_length = fftn/8; %循环前缀长度
symbol_num = 10; %OFDM符号数
M1 = 1; %调制阶数(1——BPSK)
data_length = fftn*symbol_num*M1; %数据长度
%Data generating
data_source = bingen(data_length);
%OFDM modulate
data4ifft = reshape(data_source,fftn,symbol_num); %S/P
%%%%%%%% PAR Control %%%%%%%%%%%
%% SLM
M_n = 2; %随机相位序列的大小
P = zeros(fftn,M_n);
for nn = 1:M_n
P_temp = rand(fftn,1);
for jj=1:fftn
if P_temp(jj,1) <= 0.25
P_temp(jj,1) = -j;
elseif P_temp(jj,1) <= 0.5 && P_temp(jj,1) > 0.25
P_temp(jj,1) = -1;
elseif P_temp(jj,1) <= 0.75 && P_temp(jj,1) > 0.5
P_temp(jj,1) = 1;
elseif P_temp(jj,1) <= 1 && P_temp(jj,1) > 0.75
P_temp(jj,1) = j;
end
end
P(:,nn) = P_temp;
end
for ii = 1:symbol_num
for mm = 1:M_n
data4ifft(:,ii) = data4ifft(:,ii).*P(:,mm);
ifft_out(:,ii) = sqrt(fftn)*ifft(data4ifft(:,nn)); %IFFT
%PAPR计算
arverage_pwr = ifft_out(:,ii)'*ifft_out(:,ii)/fftn;
max_value = max(abs(ifft_out(:,ii)));
PAPR(1,mm) = max_value^2/arverage_pwr;
end
plotPAPR(ii) = 10*log10(min(PAPR));
end
%CCDF计算
CCDF = zeros(1,13);
for jj = 1:13
PAR_temp = zeros(1,symbol_num);
PAR_temp(find(plotPAPR > jj-1)) = 1;
CCDF(jj) = sum(PAR_temp)/symbol_num;
end
PAR_max = 0:1:12;
semilogy(PAR_max,CCDF,'r+-')
grid on
clear all
clc
hold on
%Parameter setting
fftn = 128; %FFT点数
CP_length = fftn/8; %循环前缀长度
symbol_num = 1e5; %OFDM符号数
M1 = 1; %调制阶数(1——BPSK)
data_length = fftn*symbol_num*M1; %数据长度
%Data generating
data_source = bingen(data_length);
%OFDM modulate
data4ifft = reshape(data_source,fftn,symbol_num); %S/P
%%%%%%%% PAR Control %%%%%%%%%%%
%% SLM
M_n = 4; %随机相位序列的大小
P = zeros(fftn,M_n);
for nn = 1:M_n
P_temp = rand(fftn,1);
for jj=1:fftn
if P_temp(jj,1) <= 0.25
P_temp(jj,1) = -j;
elseif P_temp(jj,1) <= 0.5 && P_temp(jj,1) > 0.25
P_temp(jj,1) = -1;
elseif P_temp(jj,1) <= 0.75 && P_temp(jj,1) > 0.5
P_temp(jj,1) = 1;
elseif P_temp(jj,1) <= 1 && P_temp(jj,1) > 0.75
P_temp(jj,1) = j;
end
end
P(:,nn) = P_temp;
end
for ii = 1:symbol_num
for mm = 1:M_n
data4ifft(:,ii) = data4ifft(:,ii).*P(:,mm);
ifft_out(:,ii) = sqrt(fftn)*ifft(data4ifft(:,nn)); %IFFT
%PAPR计算
arverage_pwr = ifft_out(:,ii)'*ifft_out(:,ii)/fftn;
max_value = max(abs(ifft_out(:,ii)));
PAPR(1,mm) = max_value^2/arverage_pwr;
end
plotPAPR(ii) = 10*log10(min(PAPR));
end
%CCDF计算
CCDF = zeros(1,13);
for jj = 1:13
PAR_temp = zeros(1,symbol_num);
PAR_temp(find(plotPAPR > jj-1)) = 1;
CCDF(jj) = sum(PAR_temp)/symbol_num;
end
PAR_max = 0:1:12;
semilogy(PAR_max,CCDF,'k+-')
grid on
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -