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

5 Ansichten (letzte 30 Tage)
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 Kommentare
Hanojhan Rajahrajasingh
Hanojhan Rajahrajasingh am 30 Jan. 2023
N is the length of each OFDM symbol and in this context used as an integer.
Omar Dhawahir
Omar Dhawahir am 31 Jan. 2023
Bearbeitet: Omar Dhawahir am 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) ?

Melden Sie sich an, um zu kommentieren.

Antworten (0)

Kategorien

Mehr zu WLAN Toolbox finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by