⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mypapr_u_1.m

📁 OFDM峰均比经典算法matlab程序
💻 M
字号:
clear all
clc
hold on

%Parameter setting
ifftn = 128;  %FFT点数
symbol_num = 1e3; %OFDM符号数
data_length = ifftn*symbol_num*M;  %数据长度

%Data generating
data_source = bingen(data_length);

%OFDM modulate
data4ifft = reshape(data_source,ifftn,symbol_num);  %S/P

%ifft_out = sqrt(fftn)*ifft(data4ifft);   %ifft  为什么求iff的sqrt???
% ifft_out_temp1 = ifft_out;
%=================================================
%压缩扩展变换
%=================================================
         u = 3; %变换因子
         %A = max(max(abs(ifft_out)));
         
         for ii = 1:symbol_num
             w(:,ii)=ifft(data4ifft(:,ii)); 
             A = max(abs(w(:,ii)));
             w(:,ii)=w(:,ii)*ifftn;
             xn = w(:,ii);
             av_p = xn'*xn/ifftn;
             for kk = 1:ifftn
                 temp = w(kk,ii);
                 w(kk,ii) = A*temp*log(1+u*abs(temp)/A)/(log(1+u)*abs(temp));
             end
             av_p1 = w(:,ii)'*w(:,ii)/ifftn;
             w(:,ii) = av_p*w(:,ii)/av_p1;
         end
         
         %CCDF计算
         plotPAPR = zeros(1,symbol_num);
         for ii = 1:symbol_num
             xn1 = w(:,ii);
             arverage_pwr = xn1'*xn1/ifftn;%(平均功率是这样计算的:求每一个样值的功率在求和然后求平均)
             max_value = max(abs(xn1));
             PAPR = max_value^2/arverage_pwr;%计算发送信号的PAPR及平均功率
             plotPAPR(ii) = 10*log10(PAPR);
         end
         
         CCDF = zeros(1,11);
         j=0;
         for jj = 1:.1:11
             j = j+1;
             PAR_temp = zeros(1,symbol_num);
             PAR_temp(find(plotPAPR > jj-1)) = 1;%??????????
             CCDF(j) = sum(PAR_temp)/symbol_num;
         end
         PAR_max = 0:.1:10;%(门限值)
         semilogy(PAR_max,CCDF,'g+-')
         grid on

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -