Pluto-Network/code/matlab/BPSK/receiver/rx_channel_est.m

21 lines
649 B
Matlab
Raw Normal View History

2018-01-30 06:11:44 +00:00
function out_signal = rx_channel_est(signal,uw)
% MMSEƵ<45><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2BAAF>
% <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>xΪȥ<CEAA><C8A5>CP<43><50><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><E4B3A4>ΪL;
% uwΪϵͳ<CFB5><CDB3>ʹ<EFBFBD>õĶ<C3B5><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>Ϊuw_num;
% <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><79><CEAA><EFBFBD><EFBFBD>FDE<44><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>ΪL-uw_num<75><6D>
%
L = size(signal,2); %<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еij<D0B5><C4B3><EFBFBD>;
uw_num = size(uw,2); %<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵij<D6B5><C4B3><EFBFBD>;
sigstmp(1,:) = signal(1,(uw_num+1):end); %<25><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>;
uwstmp(1,:) = signal(1,1:uw_num); %<25><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
H = fft(uwstmp)./fft(uw);
h = ifft(H);
u = [h,zeros(1,L-2*uw_num)];
U = fft(u);
W = conj(U)./(U.*conj(U));
Sig = fft(sigstmp);
Y = W.*Sig;
out_signal = ifft(Y);
end