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

📄 awgn.m

📁 code for signal Processing in OFDM calculation.
💻 M
字号:
clear all; 
 
A = [1 1/exp(1) 1/exp(2)];  % power delay profile 
N = 64;  % number of symbols in a single OFDM symbol 
GI = 16;  % guard interval 
Mt = 1;  % number of Tx antennas 
Mr = 1;  % number of Rx antennas 
sig2 = 1e-3;  % noise variance 
M = 8;  % max constellation bit number 
Mgap = 10.^(0.1:(1.6/10):1.7);  % gap 
Btot = 100*Mt;  % total # bits per OFDM symbol 
TransmitIter = 50; % # iterations of symbol transmissions for each channel instance 
ChannelIter = 100; % # iterations of independent identically distributed channel instances 
GapIter = length(Mgap); 
 
load ENC2.mat 
load ENC4.mat 
load ENC16.mat 
load ENC64.mat 
load ENC256.mat 
 
TotEbNo = []; 
Errors =[]; 
EbNo = []; 
 
gap=1; 
 
 
for j=1:11 
    totalErrors=0; 
    for i=1:ChannelIter 
        for k=1:TransmitIter 
 
    %bits_alloc=4*ones(1,N); 
    %Btot=sum(bits_alloc); 
    SNR=Mgap(12-j)*ones(1,N); 
 %   for i=1:N 
 %       roundtempbits=bits_alloc(i); 
 %       energy_alloc(i)  = (2^roundtempbits-1)/SNR(i) ; 
 %  end 
    S=(SNR*sig2*gap).^0.5; 
    % bitloading 
    % bits to transmit 
    x = (randn(1,Btot)>0);     
     
    [bits_alloc,energy_alloc] = BitLoad(S,Btot,Mt*N,gap,sig2,M); 
    % modulate 
    x_mod = modulate(x,bits_alloc,energy_alloc, s2,s4,s16,s64,s256); 
 
    % precode modulated signal 
             %x_pre = precode(Mt, x_mod, V, N); 
 
            % ifft, with cyclic prefix for each antenna 
    ofdm_symbol =[]; 
    for i=1:Mt 
        %ofdm_symbol = [ofdm_symbol; ifft_cp_tx_blk(x_pre(i:Mt:Mt*(N-1)+i),N,GI)]; 
        ofdm_symbol = [ofdm_symbol; ifft_cp_tx_blk(x_mod(i:Mt:Mt*(N-1)+i),N,GI)]; 
    end 
    ofdm_symbol2 = reshape(ofdm_symbol,Mt*(N+GI),1); 
 
    % channel 
    H=eye(N+GI); 
    y = transpose(channel(sig2, Mt, Mr, ofdm_symbol2, H, N+GI)); 
 
    % fft 
    rec_symbol =[]; 
    for i=1:Mt 
        rec_symbol = [rec_symbol; fft_cp_rx_blk(y(i:Mt:Mt*(N+GI-1)+i),N,GI)]; 
    end 
 
    rec_symbol2 = reshape(rec_symbol,1,Mt*N); 
 
            % shape received signal 
            %shaped_vals = shape(rec_symbol2, Mr, U, N); 
 
            % demodulate 
            %y_demod = demodulate(shaped_vals, bits_alloc, energy_alloc, S, s2,s4,s16,s64,s256, c2,c4,c16,c64,c256); 
 
    y_demod = demodulate(rec_symbol2, bits_alloc, energy_alloc, S, s2,s4,s16,s64,s256, c2,c4,c16,c64,c256); 
            % comparison 
    totalErrors = totalErrors + sum(xor(y_demod,x)); 
 end 
 EbNo = [EbNo sum(energy_alloc)/Btot/sig2]; 
end 
Errors = [Errors totalErrors/Btot/ChannelIter/TransmitIter] 
TotEbNo = [TotEbNo mean(EbNo)] 
EbNo = []; 
end

⌨️ 快捷键说明

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