LTE上行接入技术SC-FDMA的峰均值papr比较

  • d8_203762
    了解作者
  • 4.7KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-05-13 04:28
    上传日期
本程序比较了不同调制方式,以及OFDM和SC-FDMA的papr,还有集中式和分布式的papr,并且也有采用不同滤波器的脉冲成型后的papr,可以说该程序非常全面,是学习SC-FDMA的papr非常好的程序。
最终版.rar
  • 最终版
  • main.asv
    1.9KB
  • papr.m
    3.1KB
  • papr.asv
    3.1KB
  • main.m
    1.9KB
  • rcPulse.m
    285B
  • rrcPulse.m
    408B
内容介绍
function papr global dataType global subcarrierMapping global filterType global pulseShaping totalSubcarriers = 512; % Number of total subcarriers. numSymbols = 16; % Data block size. Fs = 5e6; % System bandwidth. Ts = 1/Fs; % System sampling rate. Nos = 4; % Oversampling factor. Nsub = totalSubcarriers; Fsub = [0:Nsub-1]*Fs/Nsub; % Subcarrier spacing. Q = totalSubcarriers/numSymbols; % Bandwidth spreading factor of IFDMA. Q_tilda = 31; % Bandwidth spreading factor of DFDMA. Q_tilda < Q. rolloffFactor = 0.0999999999; %Rolloff factor for the raised-cosine filter. numRuns = 1000; % Number of runs. paprOFDMA = zeros(1,numRuns); % Initialize the PAPR results. paprSCFDMA = zeros(1,numRuns); if filterType == 1 %'rc',Raised-cosine filter. psFilter = rcPulse(Ts,Nos,rolloffFactor); elseif filterType == 2 % 'rr',Root raised-cosine filter. psFilter= rrcPulse(Ts, Nos, rolloffFactor); end for n = 1:numRuns, if dataType ==1 % 'QPSK' tmp = round(rand(numSymbols,2)); % Generate random data. tmp = tmp*2 - 1; data = (tmp(:,1) + j*tmp(:,2))/sqrt(2); elseif dataType ==2 % '16QAM' dataSet = [-3+3i -1+3i 1+3i 3+3i ... -3+i -1+i 1+i 3+i ... -3-i -1-i 1-i 3-i ... -3-3i -1-3i 1-3i 3-3i]; dataSet = dataSet / sqrt(mean(abs(dataSet).^2)); tmp = ceil(rand(numSymbols,1)*16); for k = 1:numSymbols, if tmp(k) == 0 tmp(k) = 1; end data(k) = dataSet(tmp(k)); end data = data.'; end t = [0:Ts/Nos:Nsub*Ts]; % Time range of the OFDM symbol. y1 = 0; for k = 1:numSymbols, y1= y1 + data(k)*exp(j*2*pi*Fsub(k)*t); % OFDM modulation. end X = fft(data); Y = zeros(totalSubcarriers,1); % Initialize the subcarriers. if subcarrierMapping == 1 %'IFDMA' Y(1:Q:totalSubcarriers) = X; elseif subcarrierMapping == 2 %'LFDMA' Y(1:numSymbols) = X; elseif subcarrierMapping ==3 % 'DFDMA' Y(1:Q_tilda:Q_tilda*numSymbols) = X; end % Convert data back to time domain. y2 = ifft(Y); if pulseShaping == 1 % Perform pulse shaping. y_oversampled(1:Nos:Nos*totalSubcarriers) = y2; % Up-sample the symbols. y_result = filter(psFilter, 1, y_oversampled); % Perform filtering. else y_result = y2; end paprOFDMA(n) = 10*log10(max(abs(y1).^2) / mean(abs(y1).^2));% Calculate PAPR. paprSCFDMA(n) = 10*log10(max(abs(y_result).^2) / mean(abs(y_result).^2)); end [N1,X1] = hist(paprOFDMA, 100); % Plot CCDF. [N2,X2] = hist(paprSCFDMA, 100); semilogy(X1,1-cumsum(N1)/1000,'-*')%max(cumsum(N1)) hold on semilogy(X2,1-cumsum(N2)/max(cumsum(N2)),'b') legend('OFDM','SCFDMA') xlabel('룟엇令papr(dB)') ylabel('매쪽')
评论