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

📄 cp0203_ofdm_pilot.m

📁 uwb无线电基础书本(电子工业出版社)的MATLAB程序
💻 M
字号:
function [x] = cp0203_OFDM_pilot(S,N,N_pilot,pilot,N_OFDM)

T0 = 242.4e-9;       % information length
TP = 60.6e-9;        % cyclic prefix
TG = 70.1e-9;        % total guard time
% -------------------------
% Step One - OFDM modulator
% -------------------------

tc = T0 / N;             % chip time
ntcp = floor(TP/tc);     % number of tones of the cyclic  prefix

% -------------------------
% Step Two - insert pilot
% -------------------------
n_distance = N/N_pilot;
%n_distance = n_distance - 1;
n_symbol_per_ofdm = N - 1 - N_pilot - 1; 
S0 = zeros(1,2*N*N_OFDM);
x = zeros(1,(2*ntcp+2*N)*N_OFDM);

for i = 1:N_OFDM
    for j  = 1:N_pilot
        if j==N_pilot
        S0(2+1+(j-1)*n_distance+(i-1)*2*N:N-1+(i-1)*2*N) = S(1+(j-1)*(n_distance-1)+(i-1)*n_symbol_per_ofdm:i*n_symbol_per_ofdm);
          
        else
         
        S0(2+1+(j-1)*n_distance+(i-1)*2*N:n_distance+1+(j-1)*n_distance+(i-1)*2*N) = S(1+(j-1)*(n_distance-1)+(i-1)*n_symbol_per_ofdm:n_distance-1+(j-1)*(n_distance-1)+(i-1)*n_symbol_per_ofdm);% 插入数据

        end
        
        S0(1+1+(j-1)*n_distance+2*N*(i-1)) = pilot;                            %插入导频
        
       
    end
    S0(N+(i-1)*2*N) = pilot;
end    

for i = 1:N_OFDM
    S0(N+1+1+2*N*(i-1):2*N+2*N*(i-1)) = conj(S0(N+(i-1)*2*N:-1:2+(i-1)*2*N));       %共轭  [0 127 0 127:-1:1]
end



for i = 1:N_OFDM                                                             %加入循环前缀
    S1 = S0(1+(i-1)*2*N:2*N+(i-1)*2*N);
    S1 = fft(S1);
    x(2*ntcp+1+(i-1)*(2*N+2*ntcp):2*N+2*ntcp+(i-1)*(2*N+2*ntcp)) = S1;
    x(1+(i-1)*(2*N+2*ntcp):2*ntcp+(i-1)*(2*N+2*ntcp)) = S1(2*N-2*ntcp+1:2*N);
end







            
        
    

⌨️ 快捷键说明

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