📄 pts_ccdf.m
字号:
%pts methods
clear all;
close all;
n1=10;
c1=128;
v=8;
Fs=10^3;
NN=0:.1:13;%CCDF的门限值
ccdf0=zeros(1,131);
ccdf2=ccdf0;
for m=1:n1;
% generate qam signal
x(:,1)=randsrc(c1,1,[1,-1,3,-3]);
x(:,2)=randsrc(c1,1,[1,-1,3,-3]);
y=squeeze(x);
x1=amodce(y,Fs,'qam');
y1=x1.';
% oversample 4
z1=[y1(1:c1/2),zeros(1,3*c1),y1(c1/2+1:c1)];
z2=ifft(z1)*c1;
x0=abs(z2).^2;
v3=max(x0);
m3=mean(x0);
papr3(m)=10*log10(v3/m3);
l1=length(z1);
% divided into v sets
x2=zeros(1,l1);
x4=x2;
x6=x4;
b=ones(1,v);
for k=1:v;
z(k,:)=[zeros(1,(k-1)*l1/v),z1((k-1)*l1/v+1:k*l1/v),zeros(1,(v-k)*l1/v)];
iz(k,:)=ifft(z(k,:));
iz(k,:)=iz(k,:)*c1;
x2(1,:)=x2(1,:)+b(k)*iz(k,:);
end
x3=abs(x2).^2;
m0=mean(x3);
v0=max(x3);
papr0(m)=10*log10(v0/m0);
index=1;
while index<v+1
b(index)=-1;
for n=1:v;
x4(1,:)=x4(1,:)+b(n)*iz(n,:);
end
x5=abs(x4).^2;
m1=mean(x5);
v1=max(x5);
papr1(m)=10*log10(v1/m1);
if papr1(m)<papr0(m)
papr0(m)=papr1(m);
else
b(index)=1;
end
index=index+1;
end
for l=1:131;
if papr3(m)>NN(l);
ccdf0(l)=ccdf0(l)+1;
end
if papr0(m)>NN(l);
ccdf2(l)=ccdf2(l)+1;
end
end
end
ccdf1=ccdf0./n1;
ccdf3=ccdf2./n1;
% NN=4:.5:10;
semilogy(NN,ccdf1,'r',NN,ccdf3,'b')
title('PTS方法的CCDF曲线')
xlabel('papr(dB)'),ylabel('ccdf')
grid on
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -