New MPI mitigation schemes // Duobinary // Start of FTN schemes
This commit is contained in:
36
projects/standard_system/testcode_duobinary.m
Normal file
36
projects/standard_system/testcode_duobinary.m
Normal file
@@ -0,0 +1,36 @@
|
||||
% Define parameters
|
||||
n = 1; % Define the memory length n+1 (e.g., 1 for duobinary, 2 for tribinary, 3 for tetrabinary)
|
||||
M = 4; % Modulation order (e.g., 4 for QPSK)
|
||||
d = randi([0 M-1], 1, 100); % Example input sequence d(k)
|
||||
|
||||
% Pre-coding: bPR(k) = (d(k) - bPR(k-1)) mod M
|
||||
bPR = zeros(size(d));
|
||||
%bPR(1) = d(1); % Initial condition for pre-coding
|
||||
|
||||
for k = 1:numel(d)-1
|
||||
bPR(k+1) = mod( d(k) - bPR(k), M );
|
||||
end
|
||||
|
||||
% Polybinary coding: Convolution with (1 + z^-1)^n
|
||||
% Generate coefficients for the polybinary filter (1 + z^-1)^n
|
||||
coeff = ones(1, n+1); % Initialize coefficients with ones
|
||||
|
||||
for i = 2:n+1
|
||||
coeff(i) = nchoosek(n, i-1); % Binomial coefficient for expansion
|
||||
end
|
||||
|
||||
% Apply convolution to get the polybinary coded sequence
|
||||
polybinary_data = conv(bPR, coeff, "same");
|
||||
|
||||
% Modulo operation for decoding to stay within M levels
|
||||
d_reconstructed = mod(polybinary_data, M);
|
||||
|
||||
% Check if reconstruction is correct
|
||||
reconstruction_success = isequal(d, d_reconstructed);
|
||||
|
||||
figure(111)
|
||||
hold on
|
||||
stairs(d_reconstructed)
|
||||
stairs(d)
|
||||
|
||||
disp(['Reconstruction success: ', num2str(reconstruction_success)]);
|
||||
Reference in New Issue
Block a user