?? ofdm_demod_eq.m
字號:
function [s_out] = ofdm_demod_eq(s_in)
%% ofdm 解調
%% 輸入為二進制序列
global trainingSymbols;
global trainingSymbols_len;
global ifft_len;
global CP_len;
global bitPerSymbol;
global symbolPerCarrier;
global carriers;
global s_len
% 接收 ,進行串并轉換
P_S = reshape(s_in, ifft_len+CP_len, symbolPerCarrier + trainingSymbols_len + 1);
%去CP
PDeCP = P_S(1+CP_len:ifft_len+CP_len,:);
% fft
P_FFT = fft(PDeCP,ifft_len,1);
P_FFT2 = P_FFT(carriers,:);
RxTrainSymbols = P_FFT2(:, (1: trainingSymbols_len));
%RxTrainSymbols = P_FFT2(:, (1: trainingSymbols_len,size(P_FFT2,2)-trainingSymbols_len+1:size(P_FFT2,2));
%信道均衡
% % 原理:尋求1/H,對FFT之后的數據進行頻域補償
% % 1/H = conj(H)/H^2 because H^2 = H * conj(H)
H = RxTrainSymbols./ trainingSymbols;
H_2 = H.^2;
H_2 = sum(H_2,2);
H_C2 = sum(H,2);
H_C2 = conj(H_C2);
H = H_C2./H_2 ; % 1/H = conj(H)/H^2
P_FFT3 = H*ones(1,size(P_FFT2,2)).*P_FFT2 ; %簡單線性插值
P_FFT4 = P_FFT2(:,(trainingSymbols_len+2:size(P_FFT3,2)));
%% 畫星座圖
% figure(55);
% Tmp = reshape(P_FFT4,1,[]);
% plot(real(Tmp),imag(Tmp),'.');
% title('接收端星座圖');axis([-3 3 -3 3]);
%
SQam = Qam4_demod(P_FFT4);
% 并串轉換
s_out = reshape(SQam,1,s_len);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -