clear all
close all
c1=128
n1=10000
Fs=100
MM=1:.1:13 % CCDF的门限值埋冲
ccdf1=zeros(1,121)
ccdf2=zeros(1,121)
for i=1:n1
x(:,1)=randsrc(c1,1,[+1 -1 +3 -3])
x(:,2)=randsrc(c1,1,[+1 -1 +3 -3])
y1=squeeze(x)
a=amodce(y1,Fs,'qam') % QAM modulated information
y2=a.'
z1=[y2(1:c1/2),zeros(1,3*c1),y2(c1/2+1:c1)] % 4 oversample
w1=ifft(z1)
w1=w1*c1
x2=(abs(w1)).^2
m1=mean(x2)
v1=max(x2)
papr(i)=10*log10(v1/m1)
y3=abs(w1)
CR=1.4
A=CR*sqrt(2)*std(w1) % CR=Amax/sqrt(Pin) Pin:the input power of the ofdm signal before clipping
w2=w1
for h=1:4*c1
if y3(h)>A
w2(h)=A*w1(h)/y3(h)
end
end
x3=(abs(w2)).^2
m2=mean(x3)
v2=max(x3)
papr0(i)=10*log10(v2/m2)
for j=1:121
if papr(i)>MM(j)
ccdf1(j)=ccdf1(j)+1
end
if papr0(i)>MM(j)
ccdf2(j)=ccdf2(j)+1
end
end
end
[c,d]=butter(6,0.5)
w3=filter(c,d,w2)
MM=1:.1:13
ccdf0=ccdf1./n1
ccdf3=ccdf2./n1
semilogy(MM,ccdf0,'b',MM,ccdf3,'r'陆亩)
xlabel('PAPR门限值/dB')ylabel('CCDF')
legend('clipping前','clipping后',2)
title('clipping的CCDF曲线比较')
grid on
%SLM 方法的CCDFclear all
close all
clc
c1=128
n1=1000
MM=8
NN=4:.1:10%CCDF的门限值
ccdf0=zeros(1,61)
ccdf1=ccdf0
for k=1:c1
p=randsrc(1,c1,[+1,-1,+1j,-1j])
p1(k,:)=p
%x=2*pi*(k-1)/返谨128
%p(k)=cos(x)+i*sin(x)
end
for j=1:n1
a=(-1+2*round(rand(c1,1))).'+1i*(-1+2*round(rand(c1,1))).'%QPSK映射
w1=ifft(a)%ofdm调制
w1=w1*c1
x1=(abs(w1)).^2
m1=mean(x1)
v1=max(x1)
papr0(j)=10*log10(v1/m1)%峰均吵世羡比定义
for k=1:MM %slm的循环次升拍数
%p=randsrc(1,c1,[+1,-1,+j,-j])
%p1=p.^k
y3=a.*p1(k,:)%信号序列和相位序列相乘
w2=ifft(y3)
w2=w2*c1
x2=(abs(w2)).^2
m2=mean(x2)
v2=max(x2)
papr3(j,k)=10*log10(v2/m2)
papr1(k)=10*log10(v2/m2)
end
papr2(j)=min(papr1)%最小序列
for l=1:60
if papr0(j)>NN(l)
ccdf0(l)=ccdf0(l)+1
end
if papr2(j)>NN(l)
ccdf1(l)=ccdf1(l)+1
end
end
end
ccdf2=ccdf0./n1
ccdf3=ccdf1./n1
% NN=4:.1:10
semilogy(NN,ccdf2,'r',NN,ccdf3,'b')
title('SLM方法PAPR的CCDF曲线')
xlabel('PAPR(dB)'),ylabel('互补累积分布函数CCDF')
legend('未使用SLM','使用SLM后',2)
用hold on就可以了
【按理说第五个得到的应该是1,为什么改不了】看不懂你的这句肢稿话——第五个是指哪个?“改不了”是什么意思?
很可能是因为符号运算内核导致的。我在几个不同的版本里面扰饥李做了测试,对于MuPad内核的版本缓迟(2008b之后),都不能求解;而对于Maple内核的版本(2008a之前),6.5版中int函数求不出显式解,后续计算失败,而在2007b中,可以得到
>>pretty(solve(diff(g,v)))
[0]
[ ]
[ 1/21/2 ]
[ 2(m k t)]
[ --------------- ]
[m]
[ ]
[ 1/21/2]
[ 2(m k t) ]
[- ---------------]
[ m ]
>>n=2eval(simple(eval(b)))
ans =
1.0000
>>n=3pretty(simple(eval(b)))
1/2 1/2
2(m k t pi)
2 ------------------
m pi
>>n=4pretty(eval(simple(eval(b^0.5))))
1/2 /k t\1/2
3|---|
\ m /
其中n=2的那一行应该就是你说的“第五个”吧
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)