您现在的位置:首页 >> ★免费资源 >> 源码下载 >> 内容

MATLAB代做-基于MATLAB的OFDM系统PTS算法仿真

时间:2018-12-20 14:38:26 点击:

  核心提示:MATLAB代做-基于MATLAB的OFDM系统PTS算法仿真...
% PTS--PAPR Simulation

clear all; clc; close all;
K = 128;                                                                    % FFT点数 
V = [2,3,4];                                                                % 分组数集合
QPSK_Set  = [1 -1 j -j];
Phase_Set = [1 -1 j -j];
Choose2 = [1 1;1 2;1 3;1 4;2 1;2 2;2 3;2 4;...
           3 1;3 2;3 3;3 4;4 1;4 2;4 3;4 4];
Choose3 = [1 1 1;1 1 2;1 1 3;1 1 4;1 2 1;1 2 2;1 2 3;1 2 4;...
           1 3 1;1 3 2;1 3 3;1 3 4;1 4 1;1 4 2;1 4 3;1 4 4;...
           2 1 1;2 1 2;2 1 3;2 1 4;2 2 1;2 2 2;2 2 3;2 2 4;...
           2 3 1;2 3 2;2 3 3;2 3 4;2 4 1;2 4 2;2 4 3;2 4 4;...
           3 1 1;3 1 2;3 1 3;3 1 4;3 2 1;3 2 2;3 2 3;3 2 4;...
           3 3 1;3 3 2;3 3 3;3 3 4;3 4 1;3 4 2;3 4 3;3 4 4;...
           4 1 1;4 1 2;4 1 3;4 1 4;4 2 1;4 2 2;4 2 3;4 2 4;...
           4 3 1;4 3 2;4 3 3;4 3 4;4 4 1;4 4 2;4 4 3;4 4 4];
Choose4 = [1 1 1 1;1 1 1 2;1 1 1 3;1 1 1 4;1 1 2 1;1 1 2 2;1 1 2 3;1 1 2 4;...
           1 1 3 1;1 1 3 2;1 1 3 3;1 1 3 4;1 1 4 1;1 1 4 2;1 1 4 3;1 1 4 4;...
           1 2 1 1;1 2 1 2;1 2 1 3;1 2 1 4;1 2 2 1;1 2 2 2;1 2 2 3;1 2 2 4;...
           1 2 3 1;1 2 3 2;1 2 3 3;1 2 3 4;1 2 4 1;1 2 4 2;1 2 4 3;1 2 4 4;...
           1 3 1 1;1 3 1 2;1 3 1 3;1 3 1 4;1 3 2 1;1 3 2 2;1 3 2 3;1 3 2 4;...
           1 3 3 1;1 3 3 2;1 3 3 3;1 3 3 4;1 3 4 1;1 3 4 2;1 3 4 3;1 3 4 4;...
           1 4 1 1;1 4 1 2;1 4 1 3;1 4 1 4;1 4 2 1;1 4 2 2;1 4 2 3;1 4 2 4;...
           1 4 3 1;1 4 3 2;1 4 3 3;1 4 3 4;1 4 4 1;1 4 4 2;1 4 4 3;1 4 4 4;...
           2 1 1 1;2 1 1 2;2 1 1 3;2 1 1 4;2 1 2 1;2 1 2 2;2 1 2 3;2 1 2 4;...
           2 1 3 1;2 1 3 2;2 1 3 3;2 1 3 4;2 1 4 1;2 1 4 2;2 1 4 3;2 1 4 4;...
           2 2 1 1;2 2 1 2;2 2 1 3;2 2 1 4;2 2 2 1;2 2 2 2;2 2 2 3;2 2 2 4;...
           2 2 3 1;2 2 3 2;2 2 3 3;2 2 3 4;2 2 4 1;2 2 4 2;2 2 4 3;2 2 4 4;...
           2 3 1 1;2 3 1 2;2 3 1 3;2 3 1 4;2 3 2 1;2 3 2 2;2 3 2 3;2 2 2 4;...
           2 3 3 1;2 3 3 2;2 3 3 3;2 3 3 4;2 3 4 1;2 3 4 2;2 3 4 3;2 3 4 4;...
           2 4 1 1;2 4 1 2;2 4 1 3;2 4 1 4;2 4 2 1;2 4 2 2;2 4 2 3;2 4 2 4;...
           2 4 3 1;2 4 3 2;2 4 3 3;2 4 3 4;2 4 4 1;2 4 4 2;2 4 4 3;2 4 4 4;...
           3 1 1 1;3 1 1 2;3 1 1 3;3 1 1 4;3 1 2 1;3 1 2 2;3 1 2 3;3 1 2 4;...
           3 1 3 1;3 1 3 2;3 1 3 3;3 1 3 4;3 1 4 1;3 1 4 2;3 1 4 3;3 1 4 4;...
           3 2 1 1;3 2 1 2;3 2 1 3;3 2 1 4;3 2 2 1;3 2 2 2;3 2 2 3;3 2 2 4;...
           3 2 3 1;3 2 3 2;3 2 3 3;3 2 3 4;3 2 4 1;3 2 4 2;3 2 4 3;3 2 4 4;...
           3 3 1 1;3 3 1 2;3 3 1 3;3 3 1 4;3 3 2 1;3 3 2 2;3 3 2 3;3 3 2 4;...
           3 3 3 1;3 3 3 2;3 3 3 3;3 3 3 4;3 3 4 1;3 3 4 2;3 3 4 3;3 3 4 4;...
           3 4 1 1;3 4 1 2;3 4 1 3;3 4 1 4;3 4 2 1;3 4 2 2;3 4 2 3;3 4 2 4;...
           3 4 3 1;3 4 3 2;3 4 3 3;3 4 3 4;3 4 4 1;3 4 4 2;3 4 4 3;3 4 4 4;...
           4 1 1 1;4 1 1 2;4 1 1 3;4 1 1 4;4 1 2 1;4 1 2 2;4 1 2 3;4 1 2 4;...
           4 1 3 1;4 1 3 2;4 1 3 3;4 1 3 4;4 1 4 1;4 1 4 2;4 1 4 3;4 1 4 4;...
           4 2 1 1;4 2 1 2;4 2 1 3;4 2 1 4;4 2 2 1;4 2 2 2;4 2 2 3;4 2 2 4;...
           4 2 3 1;4 2 3 2;4 2 3 3;4 2 3 4;4 2 4 1;4 2 4 2;4 2 4 3;4 2 4 4;...
           4 3 1 1;4 3 1 2;4 3 1 3;4 3 1 4;4 3 2 1;4 3 2 2;4 3 2 3;4 3 2 4;...
           4 3 3 1;4 3 3 2;4 3 3 3;4 3 3 4;4 3 4 1;4 3 4 2;4 3 4 3;4 3 4 4;...
           4 4 1 1;4 4 1 2;4 4 1 3;4 4 1 4;4 4 2 1;4 4 2 2;4 4 2 3;4 4 2 4;...
           4 4 3 1;4 4 3 2;4 4 3 3;4 4 3 4;4 4 4 1;4 4 4 2;4 4 4 3;4 4 4 4];

Choose_Len = 4.^V;      

MAX_SYMBOLS   = 1e3;
PAPR_Original = zeros(1,MAX_SYMBOLS);
PAPR_PTS      = zeros(length(V),MAX_SYMBOLS);

for mSelection = 1:length(V)
  
  switch V(mSelection)
      case 2
          Choose=Choose2;
      case 3
          Choose=Choose3;
      case 4
          Choose=Choose4;
  end

  for nSymbol = 1:MAX_SYMBOLS
    Index        = randint(1,K,length(QPSK_Set))+1;
    X            = QPSK_Set(Index(1,:));                                    % 原始频域数据
    x            = ifft(X,[],2);                                            % 时域数据
    Signal_Power = abs(x.^2);
    Peak_Power   = max(Signal_Power,[],2);
    Mean_Power   = mean(Signal_Power,2);
    PAPR_Original(nSymbol) = 10*log10(Peak_Power./Mean_Power);
%-----------------------------PTS------------------------------------------ 
%   交织方法
%   A = zeros(V(m),K);                                                            
%   for v=1:V(m)                                                                  
%       A(v,v:V(m):K) = X(v:V(m):K);
%   end
%   a = ifft(A,[],2);
%
%
%   若采用随机分割,可用下述代码描述:
    Index= randperm(K);
    A = zeros(V(mSelection),K);
    for v=1:V(mSelection)
        A(v,Index(v:V(mSelection):K)) = X(Index(v:V(mSelection):K));
    end
    a = ifft(A,[],2);
%--------------------------------------------------------------------------
    
    PAPR_PTS(mSelection,nSymbol) = 100;                                                        
    for n = 1:Choose_Len(mSelection)
        phase_temp        = Phase_Set(Choose(n,:)).';
        a_temp            = sum(a.*repmat(phase_temp,1,K));
        Signal_Power_temp = abs(a_temp.^2);
        Peak_Power_temp   = max(Signal_Power_temp,[],2);
        Mean_Power_temp   = mean(Signal_Power_temp,2);
        PAPR_temp         = 10*log10(Peak_Power_temp./Mean_Power_temp);
        if PAPR_temp < PAPR_PTS(mSelection,nSymbol)
           Best_n = n;
           PAPR_PTS(mSelection,nSymbol) = PAPR_temp;
        end
    end
  end  
end

[cdf1, PAPR1] = ecdf(PAPR_Original);
[cdf2, PAPR2] = ecdf(PAPR_PTS(1,:));
[cdf3, PAPR3] = ecdf(PAPR_PTS(2,:));
[cdf4, PAPR4] = ecdf(PAPR_PTS(3,:));

%--------------------------------------------------------------------------
semilogy(PAPR1,1-cdf1,'-k',...
         PAPR2,1-cdf2,':k',...
         PAPR3,1-cdf3,'--k',...
         PAPR4,1-cdf4,'-.k','LineWidth',2);                                 
legend('Original','PTS V=2','PTS V=3','PTS V=4');                           
set(title('PTS-PAPR Simulation'),'FontName','Times New Roman','FontSize',16);                                             
set(xlabel('PAPR0 [dB]'),'FontName','Times New Roman','FontSize',14);                                                    
set(ylabel('CCDF (Pr[PAPR>PAPR0])'),'FontName','Times New Roman','FontSize',14);
xlim([2 14]);
grid on;
set(gtext('Original'),'FontName','Times New Roman','FontSize',14);
set(gtext('V=2'),'FontName','Times New Roman','FontSize',14);
set(gtext('V=3'),'FontName','Times New Roman','FontSize',14);
set(gtext('V=4'),'FontName','Times New Roman','FontSize',14);

联系:highspeedlogic

QQ :1224848052

微信:HuangL1121

邮箱:1224848052@qq.com

网站:http://www.mat7lab.com/

网站:http://www.hslogic.com/

微信扫一扫:

Tags:PTS算法 
作者:PTS算法 来源:PTS算法
  • 您是如何找到本站的?
  • 百度搜索
  • Google搜索
  • 查阅资料过程中
  • 论坛发现
  • 百度贴吧发现
  • 朋友介绍
本站最新成功开发工程项目案例
相关评论
发表我的评论
  • 大名:
  • 内容:
  • matlab代做|matlab专业代做|matlab淘宝代做(www.hslogic.com) © 2019 版权所有 All Rights Reserved.
  • Email:highspeed_logic@163.com 站长QQ: 1224848052

    专业代做/代写/承接、MATLAB、SIMULINK、FPGA项目、博士/硕士/本科毕业设计、课题设计、论文,毕业论文,Coursework、Eassy、Assignment