21 lines
649 B
Matlab
21 lines
649 B
Matlab
|
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>yΪ<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
|