• 大小: 2KB
    文件类型: .rar
    金币: 2
    下载: 3 次
    发布日期: 2021-04-21
  • 语言: Matlab
  • 标签: PAPR  TR  OFDM  

资源简介

预留子载波法(TR)降低PAPR的matlab算法

资源截图

代码片段和文件信息

clear;
clc;
carr=1024;   %子载波个数
sym_c=10;   %每个子载波含有的OFDM符号数
bit_sym=2;  %每个符号含有的比特数,QPSK调制
IFFT_n=256; %IFFT点数
r=1/10;     %保护间隔和OFDM数据的比例;
%产生信号
sum=carr*sym_c*bit_sym;
colume=sum/(2*carr);
signal=rand(1sum)>0.5;   %初始信号
%QPSK调制QPSK_sig里面存放的是调制后的信号,数目sumQ
sumQ=sum/2;%OFDM符号总数
imag=sqrt(-1);                          % 虚部 j
QPSK=[-1+imag-1-imag1+imag1-imag];   %创建QPSK 映射表
SIGNAL=zeros(1sumQ);      %计算并存放调制前的十进制数据(将二进制转为十进制数据,第20行)
QPSK_sig=zeros(1sumQ);    %存放调制后的QPSK信号
for n=1:sumQ
 SIGNAL(n)=signal(2*n-1)*2+signal(2*n); %将二进制换算成十进制
end
for i=1:sumQ
    if SIGNAL(i)==0;
        QPSK_sig(i)=QPSK(1);
    elseif SIGNAL(i)==1;
            QPSK_sig(i)=QPSK(2);
    elseif SIGNAL(i)==2;
         QPSK_sig(i)=QPSK(3);
    elseif SIGNAL(i)==3;
               QPSK_sig(i)=QPSK(4);
    end
end                     
%串/并转换      计算第i个载波上面的信号to_par(i,:)
colume=sumQ/carr;%每个子载波的符号数
for i=1:carr  % carr载波个数
    for j=1:colume;  
        to_par(ij)=QPSK_sig(carr*(j-1)+i);
    end
end
colume=sumQ/carr;
% % to_par=reshape(QPSK_sigcarrcolume);
%每个子载波上进行 IFFT变换  (调制后的QPSK信号进行IFFT)
for j=1:colume
      y(:j)=ifft(to_par(:j)); %每一列进行一次IFFT 
end
% % y=ifft(to_par);
yr=real(y);   %实部
yi=(y-yr)*sqrt(-1)*(-1);%虚部  
y_=yr+yi*sqrt(-1);
y_series=reshape(y_1(colume)*carr);
y1=y_(:1);
y2=abs(y1);%采样点幅值
y2_power=y2.^2;%采样点功率
y2_power_mean=mean(y2_power);
sigma=sqrt(y2_power_mean);
y_PAPR=10*log10(y2_power./sigma^2);
PAPR_max=max(y_PAPR);
PAPR_mean=mean(y_PAPR);
%*******************************************进行TR消峰处理***********************
L=32;%预留子载波数目
u=0.3;%设置步进参数
for i=1:carr;                 %生成IFFT变化矩阵
    for j=1:carr;
        Q(ij)=exp(sqrt(-1)*2*pi*(i-1)*(j-1)/carr)/sqrt(carr);
    end
end
Ql=Q(:carr-L+1:carr);           %矩阵Q尖
x(:1)=y1;%步骤一:算法初始化
Imax=16;                    %迭代次数
i=0;
A=y2_power_mean;%门限值
U=zeros(carr1);
flag=1;
while((i    flag=0;
        for n=1:carr
            if abs(x(n))>A
                q_nrow=Ql(n:);
                U=U+(x(n)-A*exp(sqrt(-1)*phase(x(n))))*Ql*q_nrow‘;
                flag=1;
            else
                U=U+zeros(carr1);
            end
        end
        x=x-u*U;
    i=i+1;
end
x_power=abs(x).^2;
x_power_mean=mean(x_power);
x_sigma=sqrt(x_power_mean);
x_PAPR=10*log10(x_power./x_sigma^2);
subplot(211);
plot(y2_power‘b-‘);
xlim([01024]);
ylim([00.02]);
grid on;
subplot(212);
plot(x_power‘r-‘);
xlim([01024]);
ylim([00.02]);
grid on;
figure;
%************************************统计CCDF特性*************************************
PAPR0=2:0.5:9;
for k=1:length(PAPR0)
    count(k)=0;
    x_count(k)=0;
end
for l=1:carr;
    for k=1:length(PAPR0)
        if y_PAPR(l)>PAPR0(k)
            count(k)=count(k)+1;
        end
        if x_PAPR(l)>PAPR0(k)
            x_count(k)=x_count(k)+1;
        end
    end
end
CCDF=count/carr;
x_CCDF=x_count/carr;
subplot;
semilogy(PAPR0CCDF‘.

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3401  2012-12-11 16:45  ofdm_tr.m

----------- ---------  ---------- -----  ----

                 3401                    1


评论

共有 条评论