?? ofdm_mod_eq.m
字號:
function [s_out] = ofdm_mod_eq( s_in )
%% ofdm 調制,帶均衡
%% 輸入:二進制序列
%% 輸出:ofdm調制后符號
%global CP_len;
global nSubC
global ifft_len;
global symbolPerCarrier;
global bitPerSymbol;
global trainingSymbols;
global trainingSymbols_len;
global CP_len;
global carriers;
len = length(s_in);
SQam = reshape(s_in, nSubC,len/nSubC); %串并轉換
PQam = Qam4_mod(SQam);
%% 添加訓練序列 共 4*48 個,使用隨機數作為訓練序列
tmpTable = [-1,1,i,-i];
trainingSymbols_len = 10;
trainingSymbols = (tmpTable(floor( 4*rand(trainingSymbols_len,nSubC))+1 ))';
PQam = cat(2,zeros(nSubC,1),PQam);
PQam = cat(2,trainingSymbols,PQam);
% 64 個子載波安排,前后8個為留空,中間48 個為有效數據用
carriers = (1: nSubC) + (floor( ifft_len/4) - floor(nSubC/2)); % 坐標: (1 to 50) + 7 --> 8 to 57
conj_carriers = ifft_len - carriers + 2; % 坐標: 122 to 73
P_IFFT = zeros(ifft_len,1 + symbolPerCarrier + trainingSymbols_len); % 一個符號塊,含4列訓練序列,1列 0
P_IFFT(carriers,:) = PQam;
P_IFFT(conj_carriers,:)=conj(PQam) ; % 構造共軛矩陣,擴展為128點 ( RCC算法 ,ifft 后為實數 )
PCh = (ifft( P_IFFT ,ifft_len,1)); % 得到的數據全部為實數,實際上是虛部非常小,因此還要取實部
% 添加 CP
PCh2 = cat(1, PCh((ifft_len-CP_len+1):ifft_len,:), PCh);
s_out = reshape(PCh2, 1, (ifft_len+CP_len)*(symbolPerCarrier +trainingSymbols_len + 1)); %并串轉換
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -