📄 cp0203_ofdm_pilot.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 + -