Digital Signal Processing Reference
In-Depth Information
% Indices to constellation pPoint
Block = Const_Table(1,Table_Indices);
Data_Blocks = [Data_Blocks Block];
% Frame = training + modulated data
Frame_Blocks = [Frame_Blocks Training Block];
end
% Passing the signal through the channel %
Received_Signal = filter(hl,1, Frame_Blocks);
% Adding AWGN noise %
Received_Signal = awgn(Received_Signal, SNR, 'measured');
% Equalizer design at the reciver %
Length_Rx_Signal = length(Received_Signal);
No_Frame = fix(Length_Rx_Signal/Length_Frame);
hn=zeros(MAX_SPREAD,1);
Detected_Blocks = [];
for frame=0:No_Frame-1
% Using training to update filter coefficients using NLMS algorithm %
start_training_index = frame*Length_Frame+1;
end_training_index = start_training_index+Length_Training-1;
Training_Data =
Received_Signal(start_training_index:end_training_index);
for i=MAX_SPREAD:Length_Training
xn=Training_Data(i:-1:i-MAX_SPREAD+1);
y(i)=xn*hn;
d(i)=Training(i);
e(i)=d(i)-y(i);
hn = hn + mue*e(i)*xn'/(norm(xn)^2);
end
start_data_index = end_training_index+1;
end_data_index = start_data_index+DATA_SIZE-1;
Received_Data_Frame =
Received_Signal(start_data_index:end_data_index);
% Using the updated coefficients to equalize the received signal %
Equalized_Signal = filter(hn,1,Received_Data_Frame);
for i=1:DATA_SIZE
% Slicer for decision making
% Finding const point with min euclidean distance
[Dist Decimal] = min(abs(Const_Table - Equalized_Signal(i)));
Detected_Symbols(i) = Const_Table(Decimal);
end
scatterplot(Received_Data_Frame), title('Unqualized Received Signal');
scatterplot(Equalized_Signal), title('Equalized Signal');
Detected_Blocks = [Detected_Blocks Detected_Symbols];
end
[Detected_Blocks' Data_Blocks'];
Search WWH ::




Custom Search