Jump to content

    

Grizzly

Свой
  • Content Count

    720
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Grizzly

  • Rank
    Знающий

Recent Profile Visitors

6167 profile views
  1. Это и есть float: https://www.mathworks.com/help/matlab/matlab_prog/floating-point-numbers.html#f2-108458
  2. А, понял свою ошибку. У меня нет пилотных вставок в OFDM-символах с данными, поэтому я должен вести фазу без разрывов от символа с последовательностью Задова-Чу, по которой определена АЧХ канала. Когда я начинал фазу считать с нуля в начале каждого OFDM-символа, то происходил её скачок. Без опорных пилотов поворот созвездия из-за скачка не устранить. Можно в принципе по решениям довернуть, но хотелось бы проще. Продолжая компенсировать фазу без разрыва и затем доворачивая созвездие оценкой канала, получаю его правильное положение.
  3. @KalashKS большое спасибо. В понедельник посмотрю на своих записях.
  4. Почему-то так казалось. Был неправ. Спасибо за код. Попробую. Вчера МП-алгоритм запускал (https://www.mathworks.com/matlabcentral/fileexchange/33299-ml-estimation-of-timing-and-cfo-in-ofdm-systems), видел ложные пики на коротком ЦП даже на сигнале без шума.
  5. Хотя это странное явление с фазой. По логике на каждом OFDM-символе начальная фаза начинается с нуля. В моем случае как будто аналоговым образом формировался сигнал, где фаза от символа к символу продолжает бежать. Любопытно.
  6. Нашлась дурацкая ошибка. Я не "тянул" фазу на сабфрейме. То есть у меня для каждого из 7 OFDM-символов умножение на комплексную экспоненту начиналось с нулевой фазы... Это, конечно, не отменяет факта, что надо еще компенсировать IFO, но с дробной частью был косячок.
  7. При честных 160 различных отсчетах это так. Сейчас я работаю с минимальной полосой LTE, там 9 или 10 отсчетов. Оверсемплинг в 16 раз тут не помощник. Вдобавок влияние канала. Странно, конечно, что для Задова-Чу такое влияние частоты. Надо ещё перепроверить себя, а то вчера утверждал, что ошибка по частоте мала... В любом случае где-то на ±2 или ±3 целых частоты надо делать проверку. Но тут как бы не вышла змея, кусающая себя за хвост, когда частотная синхронизация требует временную, которая очень плоха без компенсации частотной расстройки.
  8. Оказалось, что была ошибка по частоте в 10 кГц при том, что половина разноса 7,5 кГц. Сейчас вручную скомпенсировал. Почти исчез набег фазы между OFDM-символами. Да и корреляционные пики Задова-Чу стали заметны. Где-то в 3,5 раза выше среднего уровня, как выше на идеальном сигнале. Мне почему-то казалось, что расстройку на целое число можно не компенсировать умножением на комплексную экспоненту, а брать нужные символы в частотной области со смещением на число бинов, соответствующее целой расстройке.
  9. А возможно, в трех соснах потерялся :) Хочу проверить код на всякие дурацкие ошибки и описки.
  10. Запись из эфира. Как и на что была получена, не знаю.
  11. Перепроверяю, что использую в качестве эталона при работе с реальным сигналом. Только что в LTE Toolbox сгенерировал сигнал для uplink на 6 RB, как для общей полосы в 6 RB, так и для 100 RB, чтобы получить аналог оверсемплинга. В обоих случаях пик есть в нужном месте. Рисунок для случая 6RB с данными в полосе 20 МГц (100 RB), сигнал снесен в ноль умножением на комплексную экспоненту. 4-й символ, 2048+160 + 3*(2048 + 144) + 144 = 8928 -> начало на 8929-м отсчете. Ну тааак. За несколько символов к последнему до 45 градусов может набежать. Я специально оцениваю график модулей для всех поднесущих после FFT, в редких случаях, когда рассогласование больше расстояния между ними, вручную подправлял. Скорее всего, неверное положение во времени приводит к неверной синхронизации по частоте.
  12. Спасибо за ответ. Да, она. Но что-то всё равно не получается вытянуть корреляцию. Пики не соответствуют OFDM-символам, на которых последовательности Задова-Чу. Буду перепроверять код. Логика ведь такая же, как с циклическим префиксом, пробегаем последовательно по куску с сигналом, считаем корреляции на интервале Nfft и находим максимум корреляции, но вот на графике abs(corr) при оверсемплинге в 16 раз фигня. Много пиков, некоторые расположены рядом друг с другом. Видимо, где-то ошибка закралась. function [sto_samp, max_magn_corr, corr, p] = sto_estimation_zc(y, zc_time, Nfft, Ncp, Nsymb) N = Nsymb*(Nfft + Ncp); corr = zeros(N, 1); p = zeros(N, 1); for n = 1:N corr(n) = 0; k = 0; for m = n:(n + Nfft - 1) k = k+1; corr(n) = corr(n) + y(m)*conj(zc_time(k)); p(n) = p(n) + abs(y(m))^2; end end [sto_samp, max_magn_corr] = max(abs(corr)); end При этом после думодуляции я вижу созвездия и круги Задова-Чу на соответствующих символах, но созвездия повернуты от OFDM символа к OFDM символу. Компенсация фазового сдвига в зависимости от номера поднесущей делается стандартно в частотной области по оценке аргумента между эталонной и принятой последовательностями Задова-Чу. От прокручивания созвездий это спасает, но по фазе ровно не становится.
  13. Промоделировал на свежую голову на идеальных OFDM-сигналах. Oversampling не помогает. То есть, что 9, что 144 отсчёта - корреляция плохая. Оно и логично. Ведь уникальных символов в префиксе всего 9 для сигнала 1.4 МГц, при оверсемплинге отсчёты все равно только от этих 9 символов. Надо временную синхронизацию делать либо усреднением по нескольким символам OFDM, либо по OFDM символам, которые полностью пилотные.
  14. Снова продолжил заниматься демодуляцией LTE. Возникла проблема для сигналов с полосой 1.4 МГц. До этого я работал с сигналами с полосой 20 МГц и Fs = 30.72 МГц, как это требуется. Сейчас работаю по прежнему с Fs = 30.72 МГц вместо возможных 1.92 МГц, то есть имеет место oversampling в 16 раз. SNR ~ 20-30 дБ. Замирания неглубокие, порядка ~ 3 дБ могут быть провалы. Для сигнала с полосой 20 МГц длина CP = 160 или 144 отсчета в зависимости от номера OFDM-символа во фрейме, для 1.4 МГц - 10 или 9 при работе с Fs = 1.92 МГц. Я специально оставил повышенную частоту, чтобы сохранить 160 (144) отсчетов. Для сигнал с полосой 20 МГц я вижу отчетлевые треугольники при корреляции циклического префикса. Конечно, пик сглажен и стороны кривоваты, но это треугольники, которые в несколько раз выше средних значений. При работе с сигналом 1.4 МГц пики не соответствуют началу символа (приходится на несколько десятков отсчетов брать левее, тогда созвездие принимает разумный вид), кроме того, рядом может быть несколько пиков. Чем может быть вызвана такая картина? Возможно, я зря oversampling использую?