faster than Nyquist OFDM implementation

22 ビュー (過去 30 日間)
ahmed
ahmed 2025 年 4 月 30 日
コメント済み: Dokman Djaaroun 2025 年 12 月 4 日 2:08
for almost a month I have been trying to replicate the performance of this paper "https://ieeexplore.ieee.org/document/10225298", it MIMO-FTN implementation my focus is on the OFDM-SISO-FTN. I tried implementing my concern is that I implemented H_isi and phi (noise covariance ) in the wrong way , can you give me your feed back on the code :
represents the channel matrix including the effects of ISI induced by FTN signaling and the multipath fading, and ηq is the sampled version of ηq(t). Specifically, the (k,m)-th entries of HISI can be calculated by:
g(t) is pulse shaping
​ to reduce the computation loading, whose n-th diagonal entry is calculated by
my code :
N = 128; % FFT size
G = 30; % Cyclic prefix length
% FTN parameters
rolloff = 0.3; % RRC roll-off factor
zeta =0.9; % FTN time compression factor (0 < zeta < 1) - Set to < 1 for true FTN
filter_span =12; % Filter span in symbols
sps = 10; % Samples per symbol for pulse shaping
sps_ftn = round(sps*zeta); % Effective samples per symbol (FTN acceleration)
%% Step 1: Generate random bits and BPSK modulation
% Generate random bits for all antennas
bit_streams = randi([0 1], N, Nt); % N x Nt
% BPSK modulation (0 -> -1, 1 -> +1)
S = 2 * bit_streams - 1; % N x Nt
%% Step 2: implement Precoding,
x_cp_p = zeros(N+G, Nt);
% process data steam
x_cp_p = A_cp * F_H * P * S;
%% Step 3: PULSE SHAPING
tx_upsampled = zeros(((length(x_cp_p))-1)*sps_ftn + 1,Nt ); %upsample T=tau*T0;
tx_upsampled(1:sps_ftn:end,Nt) = x_cp_p;
% Apply the FTN shaping filter to the transmitted signal
Tx_shaped = conv(tx_upsampled, rrc_filter);
tx_signal = Tx_shaped;
%% Generate ISI matrix properly (using first loop) ????
ac = conv(rrc_filter,rrc_filter);
ac_center = (length(ac) + 1) / 2;
% Generate ISI matrix H (NxN) with multipath effects
H_ISI = zeros(N+G, N+G);
for i = 1:N+G
for j = 1:N+G
val = 0;
for l = 0:L-1
dist = i - (j + l);
ac_idx = round(ac_center + dist * sps_ftn);
if ac_idx >= 1 && ac_idx <= length(ac)
val = val + h_channel(l+1) * ac(ac_idx);
end
end
H_ISI(i, j) = val;
end
end
%% Compute noise covariance using pulse autocorrelation (R_n) ????
phi = zeros(N, 1); % Initialize the noise covariance matrix
for n = 0:N-1
sum_val = 0;
for i = 0:N-1
for j = 0:N-1
lag = i - j;
ac_idx = ac_center + lag;
if ac_idx >= 1 && ac_idx <= length(ac)
sum_val = sum_val + ac(ac_idx) * exp((1i * 2*pi * lag * n )/ N); % Use N0/2 for proper scaling
end
end
end
phi(n+1) = sum_val / N;
end
% Scalar noise power (diagonal covariance)
Noise_var=phi*N0;
Noise_var=diag(Noise_var);
  2 件のコメント
sadeq ebrahimi
sadeq ebrahimi 2025 年 11 月 19 日 7:43
Hello Ahmed I am also working on FTN could you give me your contacts to connect each other?
Dokman Djaaroun
Dokman Djaaroun 2025 年 12 月 4 日 2:08

Hello Ahmed and Sadeq I am lokman I am also working on FTN this my email dokman27@gmail.com

サインインしてコメントする。

回答 (0 件)

カテゴリ

Help Center および File ExchangeWaveform Generation についてさらに検索

製品


リリース

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by