www.gusucode.com > LTE仿真Matlab源码 > LTE_channel_predictor.m
function H_est = LTE_channel_predictor(prediction_buffer,delay,fading,predict) % channel predictor based on 1D / 2D extrapolation % Author: Stefan Schwarz % stefan.schwarz@nt.tuwien.ac.at if predict numb = numel(find(sum(prediction_buffer(:,1,:,1,1),1)~=0)); % surf(abs(reshape(prediction_buffer(:,:,1:numb,1,1),size(prediction_buffer,1),size(prediction_buffer,2)*numb))) switch fading case 'BlockFading' if sum(prediction_buffer(:,1,3,1,1)) == 0 || delay == 0 % predict only if there is some past data available H_est = reshape(prediction_buffer(:,:,end,:,:),size(prediction_buffer,1),size(prediction_buffer,2),size(prediction_buffer,4),size(prediction_buffer,5)); return end for i1 = 1:size(prediction_buffer,4) % linear prediction on every subcarrier for i2 = 1:size(prediction_buffer,5) for i3 = 1:size(prediction_buffer,1) data = reshape(prediction_buffer(i3,1,end-numb+1:end,i1,i2),1,numb); H_temp = interp1(1:numb,data,numb+1:numb+delay,'linear','extrap'); H_est(i3,:,i1,i2)=repmat(H_temp,[1,size(prediction_buffer,2)]); end end end % for i1 = 1:size(prediction_buffer,4) % 2D prediction % for i2 = 1:size(prediction_buffer,5) % data = reshape(prediction_buffer(:,1,end-numb+1:end,i1,i2),size(prediction_buffer,1),numb); % H_temp = griddata(1:numb,1:size(data,1),data,numb+1:numb+delay,1:size(data,1),'v4'); % H_est(:,:,i1,i2)=repmat(H_temp,[1,size(prediction_buffer,2)]); % end % end case 'FastFading' if delay == 0 % predict only if there is some past data available H_est = reshape(prediction_buffer(:,:,end,:,:),size(prediction_buffer,1),size(prediction_buffer,2),size(prediction_buffer,4),size(prediction_buffer,5)); return end for i1 = 1:size(prediction_buffer,4) % number of receive antennas for i2 = 1:size(prediction_buffer,5) % number of transmit antennas for i3 = 1:size(prediction_buffer,1) % number of subcarriers data = reshape(prediction_buffer(i3,:,end-numb+1:end,i1,i2),1,size(prediction_buffer,2)*numb); H_temp = interp1(1:size(data,2),data,size(prediction_buffer,2)*numb+1:size(prediction_buffer,2)*(numb+delay),'linear','extrap'); H_est(i3,:,i1,i2)=H_temp; end end end end else H_est = reshape(prediction_buffer(:,:,end,:,:),size(prediction_buffer,1),size(prediction_buffer,2),size(prediction_buffer,4),size(prediction_buffer,5)); end % surf(abs(H_est(:,:,1,1)));