How to modify this MMSE channel estimation code to accommodate optical OFDM

5 views (last 30 days)
function H_MMSE = MMSE(RxP,TxP,N,pilotFrequency,h_CIR,SNR)
noiseVar = 10^(SNR*0.1);
Np=N/pilotFrequency; % Number of Pilots
H_LS = RxP./TxP; % LS estimate
k=0:length(h_CIR)-1;
hh = h_CIR*h_CIR';
% tmp = h_CIR.*conj(h_CIR).*k;
r = sum(h_CIR.*conj(h_CIR).*k)/hh;
r2 = (h_CIR.*conj(h_CIR).*k)*k.'/hh;
t_rms = sqrt(r2-r^2); % rms delay
D = 1j*2*pi*t_rms/N; % Denomerator of Eq. (6.16) page 192
K1 = repmat([0:N-1].',1,Np);
K2 = repmat([0:Np-1],N,1);
rf = 1./(1+D*(K1-K2*pilotFrequency));
K3 = repmat([0:Np-1].',1,Np);
K4 = repmat([0:Np-1],Np,1);
rf2 = 1./(1+D*pilotFrequency*(K3-K4));
Rhp = rf;
Rpp = rf2 + eye(length(H_LS),length(H_LS))/noiseVar;
H_MMSE = transpose(Rhp*inv(Rpp)*H_LS); % MMSE channel estimate
  3 Comments
Omar Dhawahir
Omar Dhawahir on 31 Jan 2023
Edited: Omar Dhawahir on 1 Feb 2023
Do you mean time (3.2 us)or subcarriers(52) in Wifi 802.11g?
I'm trying to apply MMSE channel estimation for WiFi 802.11g, i still don't know how to calculate that Np=N/pilotFrequency;
what is the pilotFrequency ? is that number of pilots ?
H_LS = fft(LT)./ Tx_LT;
h_CIR = ifft(H_LS);
SNR = calculate it in signal filed
pilotFrequency = ?
N = 52/ ?
Can you post link for this (Denomerator of Eq. (6.16) page 192) ?

Sign in to comment.

Answers (0)

Categories

Find more on WLAN Toolbox in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!