📄 xiangweiyinzi.m
字号:
%相位因子估计法
clear;
v=8;
nl=100;
for n=1:nl;
a=rand(1,256)>0.5;
C=(a*2-1)/sqrt(2);
sreal=C(1:2:256);
simage=C(2:2:256);
D=sreal+j.*simage;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% oversample 4
z1=[D(1:128/2),zeros(1,3*128),D(128/2+1:128)];
z2=ifft(z1)*512;
x0=abs(z2).^2;
v3=max(x0);
m3=mean(x0);
papr1(n)=10*log10(v3/m3);
l1=length(z1);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% divided into v sets
x5=zeros(256,512);
x7=zeros(v,512);
b=ones(1,v);
x4=zeros(1,512);
P=zeros(l1,v);
P1=zeros(l1,v);
Q=zeros(l1,v);
for k=1:v
z(k,:)=[zeros(1,(k-1)*128/v),D((k-1)*128/v+1:k*128/v),zeros(1,(l1-(k-1)*128/v-128/v))];
iz(k,:)=ifft(z(k,:));
iz(k,:)=iz(k,:)*512;
x5(1,:)=x5(1,:)+b(k)*iz(k,:);
P(:,k)=iz(k,:);
end
x6=abs(x5).^2;
m2=mean(x6);
v2=max(x6);
papr2(n)=10*log10(v2/m2);
papr3(n)=papr2(n);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%次优化搜索
index=1;
while index<v+1
b(index)=-1;
for m=1:v;
x7(index,:)=x7(index,:)+b(m)*iz(m,:);
m+1;
end
x8=abs(x7(index,:)).^2;
m4=mean(x8);
v4=max(x8);
papr0(n)=10*log10(v4/m4);
if papr0(n)<papr2(n)
papr2(n)=papr0(n);
else
b(index)=1;
end
index=index+1;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%全搜索算法
jjj=1;
for i1=-1:2:1;
for i2=-1:2:1;
for i3=-1:2:1;
for i4 = -1:2:1;
for i5=-1:2:1;
for i6=-1:2:1;
for i7=-1:2:1;
for i8=-1:2:1;
A(jjj,1:8)=[i1,i2,i3,i4,i5,i6,i7,i8];
jjj=jjj+1;
end
end
end
end
end
end
end
end
for i=2:256;
for k=1:v;
x5(i,:)=x5(i,:)+A(i,k)*iz(k,:);
end
y5=abs(x5(i,:)).^2;
v5=max(y5);
m5=mean(y5);
papr00(n)=10*log10(v5/m5);
if papr00(n)<papr3(n);
papr3(n)=papr00(n);
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i1=1:l1
x3=abs(P(i1,:)).^2;
P1(i1,:)=x3;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i1=1:l1
number=paixu1(P1(i1,:));
for m=1:v
R(:,m)=P1(:,number(2,m));
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i2=1:l1;
Q1(i2,:)=R(i2,1:2:v);
Q2(i2,:)=R(i2,2:2:v);
Q2(i2,:)=-1*Q2(i2,:);
end
x1=sum(Q1');
x2=sum(Q2');
x3=x1+x2;
v1=max(abs(x3));
m1=mean(abs(x3));
papr000=10*log10(v1/m1);
x4(i1)=papr000;
end
papr4(n)=min(x4);
papr4(n)=papr4(n)+2.5;
end
ccdf0=zeros(1,131);
ccdf2=zeros(1,131);
ccdf4=zeros(1,131);
ccdf6=zeros(1,131);
NN=0:.1:13;
for n=1:nl;
for l=1:131;
if papr1(n)>NN(l);
ccdf0(l)=ccdf0(l)+1;
end
if papr2(n)>NN(l);
ccdf2(l)=ccdf2(l)+1;
end
if papr3(n)>NN(l);
ccdf4(l)=ccdf4(l)+1;
end
if papr4(n)>NN(l);
ccdf6(l)=ccdf6(l)+1;
end
end
end
ccdf1=ccdf0./100;
ccdf3=ccdf2./100;
ccdf5=ccdf4./100;
ccdf7=ccdf6./100;
figure(1)
semilogy(NN,ccdf1,'mO-',NN,ccdf3,'gX-',NN,ccdf5,'cs-',NN,ccdf7,'r*-')
title('CCDF曲线比较')
xlabel('papr( in dB)'),ylabel('ccdf')
legend('原始曲线','次优化搜索','全搜索','相位因子估计算法');
grid on
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -