How to modify this MMSE channel estimation code to accommodate optical OFDM
5 次查看(过去 30 天)
显示 更早的评论
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 个评论
Omar Dhawahir
2023-1-31
编辑:Omar Dhawahir
2023-2-1
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) ?
回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!