⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 code_r_papr.m

📁 课程作业
💻 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 + -