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

📄 ccdf_slm_sim.m

📁 课程作业
💻 M
字号:
%***************************************************
% SLP-OFDM系统PARP抑制算法仿真,BPSK调制
% N 子载波数  
% M 随机相位序列个数
% K 输入序列数
% X 发送符号矩阵,N*K维
% P 随机相位矩阵,N*M维
%---------------------------------------------------
clc; clear;
echo off all;
t = cputime;
N = 128; M = 32; K = 2^15;
X = 2*randint(N,K) - ones(N,K); %随机产生K个发送符号(N维列向量)
P = 2*randint(N,M) - ones(N,M); %随机产生M个相位序列(N维列向量)
Y = zeros(N*4,M);   %4倍过采样
papr = zeros(1,K);
for i = 1:K      %对每个发送符号序列循环
    for j = 1:M
        Y(1:N,j) = P(:,j).*X(:,i);  %相位旋转
    end
    y = abs(ifft(Y)).^2;  %对列向量求IFFT
    tempv = 10*log10(max(abs(y))./mean(y)); 
    papr1(i) = min(tempv(1));    %求M=1个序列中PAPR最小的值
    papr2(i) = min(tempv(1:2));  %求M=2个序列中PAPR最小的值
    papr3(i) = min(tempv(1:4));  %求M=4个序列中PAPR最小的值
    papr4(i) = min(tempv(1:8));  %求M=8个序列中PAPR最小的值
    papr5(i) = min(tempv(1:16)); %求M=16个序列中PAPR最小的值
    papr6(i) = min(tempv);       %求M=32个序列中PAPR最小的值
    %papr7(i) = min(tempv);       %求M=64个序列中PAPR最小的值
end
[cdf1, PAPR1] = ecdf(papr1);
[cdf2, PAPR2] = ecdf(papr2);
[cdf3, PAPR3] = ecdf(papr3);
[cdf4, PAPR4] = ecdf(papr4);
[cdf5, PAPR5] = ecdf(papr5);
[cdf6, PAPR6] = ecdf(papr6);
%[cdf7, PAPR7] = ecdf(papr7);

figure(1);
semilogy(PAPR1,1-cdf1,'b',PAPR2,1-cdf2,'r',PAPR3,1-cdf3,'c',PAPR4,1-cdf4,'k',PAPR5,1-cdf5,'g',PAPR6,1-cdf6,'m')
legend('M=1','M=2','M=4','M=8','M=16','M=32');
xlabel('峰均功率比 PAPR0 [dB] ');
ylabel('CCDF (Pr[PAPR>PAPR0])');
e = cputime - t;
echo on all;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -