资源简介

OFDM仿真中采用循环码(论文附录)、汉明码(m文件中)两种编码方式,采用QPSK调制解调,高斯信道,包含仿真的各种结果图,代码中包含注释,峰均比抑制方式采用限幅法的一种(中频噪声成形),压缩包中为完整的m文件和论文

资源截图

代码片段和文件信息

clear all; clc; close all;
carrier=52;
numb_ifft=100;
numb_cp=25;
symb_ofdm=6;
bit_symb=2;
snr=15;
symbol_rate=250000;
bit_rate=symbol_rate.*bit_symb;
sum_bit=carrier*symb_ofdm*bit_symb;

MAX_SYMBOLS= 6;
ITERATE_NUM=2
PAPR_Orignal = zeros(1MAX_SYMBOLS); %%记录每个OFDM符号的PAPR,原始的
PAPR_NS = zeros(ITERATE_NUMMAX_SYMBOLS); %经过NS算法的
for nSymbol=1:MAX_SYMBOLS

signal=rand(1sum_bit)<0.5;
figure(1)
subplot(211)
plot(signal)
xlabel(‘time‘)
ylabel(‘amplitude‘)
grid on        %********完成待传数据*******

%%%%%循环码信源编码
m = 3;                                     
n = 2^m-1;                                 %定义码长
k = n-m;                                   %信息位长
p=cyclpoly(nk)                              %循环码生成多项式,n=7,k=4
code = encode(signalnk‘cyclic‘p);               %编码函数,对信号进行差错编码

signal_p=reshape(code9112);%*****实现串并转换**
for k=1:carrier+39
    for n=1:bit_symb*symb_ofdm/2
        imp=signal_p(k2*n);
        rlp=signal_p(k2*n-1);
        if(imp==0)&&(rlp==0)
            d(kn)=exp(i*5*pi/4);
        end
        if(rlp==0)&&(imp==1)
            d(kn)=exp(i*3*pi/4);
        end
        if(rlp==1)&&(imp==0)
            d(kn)=exp(i*7*pi/4);
        end
        if(rlp==1)&&(imp==1)
            d(kn)=exp(i*pi/4);
        end
    end
end

sci=real(d);
scq=imag(d);

figure(2)
for m=1:bit_symb*symb_ofdm/2
    scatter(sci(:m)scq(:m)‘r‘)
    hold on
    grid on    %****完成QPSK调制****
end
QPSKdata=reshape(d1546);
% 降低峰均比

K  = length(QPSKdata);                                                                   % SIZE OF OFDM Symbol
IF = 2;                                                                     % Interpolation factor (Oversampling factor)
Nf  = K*IF;
CR=4;
           % SIZE OF FFT
ITERATE_NUM = 2; %限幅次数

Index = randi(length(QPSKdata)-11K)+1; %随机生成QPSK的相位的序号,比如1表示12表示-1,3表示j
X =QPSKdata(Index(1:)); %原始信号的相位(频域)
XX = [X(1:K/2) zeros(1Nf-K) X(K/2+1:K)]; 

x = ifft(XX[]2); % 时域的信号xk
Signal_Power = abs(x.^2); %计算信号功率
Peak_Power = max(Signal_Power[]2); %求最大功率
Mean_Power = mean(Signal_Power2); %求平均功率
PAPR_Orignal(nSymbol) = 10*log10(Peak_Power./Mean_Power); %信号的PAPR

for nIter=1:ITERATE_NUM 
% 限幅
x_orig=x;%延迟匹配原始信号
x_tmp = x(Signal_Power>CR*Mean_Power); %削波限幅
x_tmp = sqrt(CR*Mean_Power)*x_tmp./abs(x_tmp); 
x(Signal_Power>CR*Mean_Power) = x_tmp; 
nois=x_orig-x;%匹配延时减去一次限幅,噪声信号
% > 噪声程序滤波器
XX = fft(nois[]2); 
XX(K/2+(1:Nf-K)) = zeros(1Nf-K); %滤波
noise_filter = ifft(XX[]2); 
x=x_orig-noise_filter ;%从原始信号中,消去限幅信号
% 计算NS算法后的PAPR
dout=[x(1:K/2)  x(K/2+K+1:2*K)]
Signal_Power = abs(x.^2); 
Peak_Power = max(Signal_Power[]2); 
Mean_Power = mean(Signal_Power2); 
PAPR_NS(nIternSymbol) = 10*log10(Peak_Power./Mean_Power); 
end

houd=reshape(dout916);
ifft_signal=ifft(houdnumb_ifft);
ifft_rlsig=real(ifft_signal);
ifft_imsig=imag(ifft_signal);
ifft_signal_con=ifft_signal‘;
figure(3)
for f=1:symb_ofdm
    subplot(23f)
    plot(0:numb_ifft

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件      737151  2018-11-08 12:07  移动通信课设.docx
     文件        6483  2018-11-05 20:32  Uzaoshengchengxing.m

评论

共有 条评论