📄 code_r_papr.m
字号:
%***************************************************
% 编码方法PARP抑制算法的编码效率仿真
% 载波数 N = 4, 8, 16, 32
% M 过采样因子
% papr 每符号内峰均功率比
%---------------------------------------------------
echo off all;
clc; clear
t = cputime;
M = 4;
x = 0:0.001:1;
papr1 = zeros(1,length(x)); %保存N=4时的PAPR排序值
papr2 = zeros(1,length(x)); %保存N=8时的PAPR排序值
papr3 = zeros(1,length(x)); %保存N=16时的PAPR排序值
%-计算4子载波----------------------
N = 4;
pt = zeros(1,(2^N)*N*M); papr = zeros(1,2^N);
for i = 0:(2^N-1) %对每个符号循环
symbol = dec2bin(i,N);
temp = zeros(1,N*M);
for j = 1:N %对符号的每一位循环
temp(j) = sign(str2num(symbol(N-j+1))-0.5); %字符串尾为最低位
end
temp = abs(ifft(temp)).^2
pt(i*N*M+1:(i+1)*N*M) = temp; %计算包络功率
papr(i+1) = 10*log10(max(temp)/mean(temp)); %计算PAPR
end
temppapr1 = sort(papr);
%-计算8子载波-----------------------
N = 8;
pt = zeros(1,(2^N)*N*M); papr = zeros(1,2^N);
for i = 0:(2^N-1) %对每个符号循环
symbol = dec2bin(i,N);
temp = zeros(1,N*M);
for j = 1:N %对符号的每一位循环
temp(j) = sign(str2num(symbol(N-j+1))-0.5); %字符串尾为最低位
end
temp = abs(ifft(temp)).^2
pt(i*N*M+1:(i+1)*N*M) = temp; %计算包络功率
papr(i+1) = 10*log10(max(temp)/mean(temp)); %计算PAPR
end
temppapr2 = sort(papr);
%-计算16子载波-----------------------
N = 16;
pt = zeros(1,(2^N)*N*M); papr = zeros(1,2^N);
for i = 0:(2^N-1) %对每个符号循环
symbol = dec2bin(i,N);
temp = zeros(1,N*M);
for j = 1:N %对符号的每一位循环
temp(j) = sign(str2num(symbol(N-j+1))-0.5); %字符串尾为最低位
end
temp = abs(ifft(temp)).^2
pt(i*N*M+1:(i+1)*N*M) = temp; %计算包络功率
papr(i+1) = 10*log10(max(temp)/mean(temp)); %计算PAPR
end
temppapr3 = sort(papr);
for i=1:length(x)
j = round(x(i)*(2^4)); if (j >= 1) papr1(i)=temppapr1(j); end
j = round(x(i)*(2^8)); if (j >= 1) papr2(i)=temppapr2(j); end
j = round(x(i)*(2^16)); if (j >= 1) papr3(i)=temppapr3(j); end
end
figure(1);
plot(x,papr1);grid;xlabel('编码效率R');ylabel('峰平功率比(dB)');hold on;
plot(x,papr2,'r');hold on;
plot(x,papr3,'g');hold off;
legend('N=4','N=8','N=16');
e = cputime -t;
echo on all;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -