• 大小: 20KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-05-09
  • 语言: Matlab
  • 标签: OFDM  PAPR  ACE  

资源简介

代码中描述了用星座图扩展法(Active Constellation Extension,ACE)降低OFDM时域信号的PAPR,ACE的具体算法是凸集映射(Projection Onto Convex Sets,POCS).编程语言:MATLAB

资源截图

代码片段和文件信息

function [CCDFDownSample PARDownSample] = getccdf(PAR XSpace)
% 函数描述:统计一定数量的PAR的CCDF并下采样
% 之所以下采样,是因为由于点比较多,仿1e6个OFDM符号时图片有100多MB
% 于是就想到了下采样,但downsample函数是等间距采样
% 偏偏PAR的横坐标的增长不是线性的,导致画的图很难看,横坐标越大越稀疏
% 所以就自己写了个变采样率的下采样,根据横坐标值的间距XSpace来决定是否采样
% 这种思想对于MAX_SYMBOL比较小也适用,因为如果相邻横坐标的值大于XSpace,
% 则相当于没有下采样,画出的图的点数还是原来那么多

% called by:各种统计PAR的m文件
% 输入参数:
%   PAR:每个OFDM符号的PAR,向量
%   XSpace:下采样的X轴采样间隔,标量,推荐0.3
% 输出参数
%   PARDownSample:下采样之后的PAR横坐标
%   CCDFDownSample:对应PARDownSample的CCDF,纵坐标

%               Last Version : 
%               This Version : 0.9
%     This File generated by : 张力
%       This File updated by : 张力

% Revision History :
%     时间        姓名    具体工作
%     20120621

% 电子科技大学 通信与信息工程学院
% School of Communication and Information Engineering 
% University of Electronic Science and Technology of China Chengdu Sichuan China
% Email: larlyii@gmail.com

if nargin == 1
    XSpace = 0.3;
end

% 根据XSpace先把需要画图的点的数目确定了
CDFDownSample = zeros(ceil(1 / XSpace * (13 - 0)) 1 ‘double‘);
PARDownSample = zeros(ceil(1 / XSpace * (13 - 0)) 1 ‘double‘);

% ================== 原始OFDM符号PAR的统计的下采样(开始)==================
[CDF CDFPAR] = ecdf(PAR);
CDFPARDownSample(1) = CDFPAR(1);
CDFDownSample(1) = CDF(1);
Num = 0;
for Idx = 1 : length(CDFPAR)
    % 如果搜索的相邻点的值大于XSpace,保留此点,Num+1
    if CDFPAR(Idx) - CDFPARDownSample(1) > Num * XSpace ...
        && CDF(Idx) ~= 1
        % 还要判断CDF(Idx)是不是等于1,之所以这样做,是因为有可能刚好扫描到
        % 最后一个点满足间距的条件,但是最后一个点的纵坐标却等于1,这样再将DownSample
        % 的最后一个元素赋值为原始数据的最后一个非1元素,就会出现1插在2个非1之间的情况,
        % 导致画不出这2段曲线,所以如果扫描到CDF(Idx)为1的话,就不要这个点
        Num = Num + 1;
        CDFDownSample(Num) = CDF(Idx);
        PARDownSample(Num) = CDFPAR(Idx);
    end
end
% 要找到最后一个非1元素,赋值给下采样之后信号的最后一个元素,
% 否则会导致最后一小部分的线不能画出来,因为纵坐标是对数坐标,不能画出0
NotOneIdx = int32(find(CDF < 1));
LastNotOneIdx = NotOneIdx(end);
CDFDownSample(Num + 1) = CDF(LastNotOneIdx);
PARDownSample(Num + 1) = CDFPAR(LastNotOneIdx);
CDFDownSample(Num + 2 : end) = [];
PARDownSample(Num + 2 : end) = [];
CCDFDownSample = 1 - CDFDownSample;

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

     文件      15117  2013-01-02 16:43  POCS_QPSK_not_simplified.m

     文件      14662  2013-04-25 10:36  POCS_QPSK_simplified.m

     文件      13898  2013-04-25 11:04  POCS_QPSK_simplified_infinite_iteration.m

     文件        467  2013-11-28 21:54  readme.txt

     文件       2604  2013-01-02 11:13  getccdf.m

     文件      15201  2013-01-02 16:44  POCS_QAM_simplified.m

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

                61949                    6


评论

共有 条评论