Hi,
I want to do DFT based estimation for ODFM. The estimation is working well for the pilot position but it is not working for the unknown positions.
I am attaching the matlab code below.
clc
close all
clear all
Nfft = 128;
No_sc = 12;
No_RB = 6;
No_data_sc = No_RB * No_sc;
idx_data_sc = [-36:-1 1:36];
idx_pilot = [-36:6:-1 1:6:36];
data = abs(randn(No_data_sc,1)>0.5)+1;
% idx_data_sc+Nfft/2+1;
% idx_pilot+Nfft/2+1;
% idx_pilot+Nfft/2+1-(Nfft-No_data_sc)/2+3;
mod_carriers = zeros(Nfft,1);
mod_carriers(idx_data_sc+Nfft/2+1,1) = data;
% mod_carriers = fftshift(mod_carriers);
t_data = sqrt(Nfft)*ifft(mod_carriers);
cp_data= [t_data(end-9:end,1); t_data];
h(1) = 1.5;
h(2) = 1;
r_data = conv(h,cp_data);
r_data = r_data(1:length(cp_data),1);
% r_data = cp_data;
de_cp = r_data(11:end,1);
de_fft = fft(de_cp)/sqrt(Nfft);
de_fft = fftshift(de_fft);
f_data = de_fft(idx_data_sc+Nfft/2+1,1);
H = fft(h,Nfft);
H = H.';
H = H(idx_data_sc+Nfft/2+1,1);
f_data = f_data./conj(H);
H_p = H(idx_pilot+Nfft/2+1-(Nfft-No_data_sc)/2+3);
H_p = [ H_p(1:6,1);0;H_p(7:12,1)];
h_p = ifft(H_p);
H_r = fft(h_p, No_data_sc+1);
plot(1:72,abs(H.^2));
hold on
plot(1:73,abs(H_r.^2), 'o');
%%%%%%%%%%%%%%%%%%%%%%%%
figure;
fsMHz = 1.4;
[Pxx,W] = pwelch(cp_data,[],[],128,1.4);
plot([-64:63]*fsMHz/128,10*log10((Pxx)));
xlabel('frequency, MHz')
ylabel('power spectral density')
title('Transmit spectrum OFDM (based on 802.11a)');
I want to do DFT based estimation for ODFM. The estimation is working well for the pilot position but it is not working for the unknown positions.
I am attaching the matlab code below.
clc
close all
clear all
Nfft = 128;
No_sc = 12;
No_RB = 6;
No_data_sc = No_RB * No_sc;
idx_data_sc = [-36:-1 1:36];
idx_pilot = [-36:6:-1 1:6:36];
data = abs(randn(No_data_sc,1)>0.5)+1;
% idx_data_sc+Nfft/2+1;
% idx_pilot+Nfft/2+1;
% idx_pilot+Nfft/2+1-(Nfft-No_data_sc)/2+3;
mod_carriers = zeros(Nfft,1);
mod_carriers(idx_data_sc+Nfft/2+1,1) = data;
% mod_carriers = fftshift(mod_carriers);
t_data = sqrt(Nfft)*ifft(mod_carriers);
cp_data= [t_data(end-9:end,1); t_data];
h(1) = 1.5;
h(2) = 1;
r_data = conv(h,cp_data);
r_data = r_data(1:length(cp_data),1);
% r_data = cp_data;
de_cp = r_data(11:end,1);
de_fft = fft(de_cp)/sqrt(Nfft);
de_fft = fftshift(de_fft);
f_data = de_fft(idx_data_sc+Nfft/2+1,1);
H = fft(h,Nfft);
H = H.';
H = H(idx_data_sc+Nfft/2+1,1);
f_data = f_data./conj(H);
H_p = H(idx_pilot+Nfft/2+1-(Nfft-No_data_sc)/2+3);
H_p = [ H_p(1:6,1);0;H_p(7:12,1)];
h_p = ifft(H_p);
H_r = fft(h_p, No_data_sc+1);
plot(1:72,abs(H.^2));
hold on
plot(1:73,abs(H_r.^2), 'o');
%%%%%%%%%%%%%%%%%%%%%%%%
figure;
fsMHz = 1.4;
[Pxx,W] = pwelch(cp_data,[],[],128,1.4);
plot([-64:63]*fsMHz/128,10*log10((Pxx)));
xlabel('frequency, MHz')
ylabel('power spectral density')
title('Transmit spectrum OFDM (based on 802.11a)');