реклама на сайте
подробности

 
 
> Перевод OFDM из комплексной формы в реальный сигнал и обратно
lennen
сообщение Nov 26 2016, 17:12
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 227
Регистрация: 1-10-15
Из: Москва
Пользователь №: 88 647



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

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


OFDMsend = abs(s+10000)-10000

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


Как бы не так! Появляется много лишних точек в созвездии. Тогда я не понимаю, как это делается. Подскажите, пожалуйста?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 1)
quato_a
сообщение Nov 26 2016, 22:22
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 95
Регистрация: 27-07-11
Из: Зеленоград
Пользователь №: 66 439



Код
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


--------------------
Суббота начинается в понедельник
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th August 2025 - 12:30
Рейтинг@Mail.ru


Страница сгенерированна за 0.01298 секунд с 7
ELECTRONIX ©2004-2016