Перейти к содержанию
    

Перевод OFDM из комплексной формы в реальный сигнал и обратно

Я все время делал это на векторном оборудовании и думал, что достаточно взять модуль от комплексного числа, чтобы получился реальный сигнал в выборках. А затем если взять от него БПФ, то все станет на свои места. Вот код в Матлаб:

 

%Простейший OFDM-символ
s = ifft(S);


OFDMsend = abs(s+10000)-10000

%srec = fft(OFDMsend);
plot(fft(OFDMsend));

 

Как бы не так! Появляется много лишних точек в созвездии. Тогда я не понимаю, как это делается. Подскажите, пожалуйста?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

n = 201;
map_re = randi([0 1], [1,n]);
map_im = randi([0 1], [1,n]);

for i = 1:n
    if map_re(i) == 0
        map_re(i) = -1;
    end
end

for i = 1:n
    if map_im(i) == 0
        map_im(i) = -1;
    end
end

mapc = map_re + 1i*map_im;

mapc(101) = complex(0);

mapc = mapc * 2^(1/2) / 2;

figure; plot(mapc, '*'); grid on;

maptx = [mapc(101:201) zeros(1,823) mapc(1:100)];
figure; plot(real(maptx)); grid on;

tx = ifft(maptx, 1024);

figure; plot(real(tx)); grid on;
figure; plot_psd(tx, 100e6, 256);

maprx = fft(tx, 1024);

figure; plot(maprx, '*'); grid on;

 

function plot_psd(x, Fs, N)
% Строит график спектральной плотности мощности сигнала (Power Spectral Density) нормированный по log оси и fs 
    NH = floor (N/2);
    
    xPsd = psd (x/2^(12-1), N, Fs);
    length(xPsd);
    if (length(xPsd) ~= N) % real
        xPsdResh(1:NH) = xPsd(1:NH);
        xFreq = (0:NH-1)/N*Fs*10^-6;
        length(xPsdResh);
        length(xFreq);
    else % complex
        xPsdResh(1:NH) = xPsd(NH+1:N);
        xPsdResh(NH+1:N) = xPsd(1:NH);
        xFreq = ((0:N-1)-NH)/N*Fs*10^-6;
    end
    xLog = 10*log10(xPsdResh);
%     xFreq = ((0:N-1)-NH)/N*Fs*10^-6; 
    plot( xFreq, xLog, 'b-');
    grid;
end

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...