求高手帮助 用 matlab 做 OFDM的限幅法降低PAPR值 的源码 急救啊!!

求高手帮助 用 matlab 做 OFDM的限幅法降低PAPR值 的源码 急救啊!!,第1张

% clipping的CCDF曲线比较 clipping_ccdf.m16QAM调制 子载波数为128

% papr of the ofdm signals

clear all

close all

c1=128

n1=10000

Fs=100

MM=1:.1:10 % CCDF的门限

ccdf1=zeros(1,91)

ccdf2=zeros(1,91)

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:91

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:10

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

我也在做这个 很是头疼 我找的一个程序 你看能不能帮弯悉歼助你吧 希望可以交流

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

【按理说第五个得到的应该是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的那一行应该就是你说的“第五个”吧


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12340549.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存