Я специально проверил файл, перед тем как его загружать.
Вот воспроизведение первого файла через штатную программу для работы с sdr приемниками SDRSharp: https://www.youtube.com/watch?v=vR5pJvZpSgI.
программный перенос спектра
- Бахурин Сергей
- Администратор
- Сообщения: 1119
- Зарегистрирован: 05 окт 2010, 19:55
- Контактная информация:
Re: программный перенос спектра
о должен заметить, спектр действительно симметричный. Надо строки заменить в коде.
Первая замена:
вторая замена
А то Q канал игнорировался
Первая замена:
Код: Выделить всё
% перевожу стерео из файла в один комплексный сигнал
adc = adc(:,1) + 1i * adc(:,2);
вторая замена
Код: Выделить всё
% перевожу стерео из файла в один комплексный сигна
shf = shf(:,1) + 1i * shf(:,2);
Re: программный перенос спектра
Благодарю за код для Octave. Немного переделал его, раскрыв экспоненту в тригонометрической форме - результат получился корректный.
Единственное различие, которое я сейчас вижу между своим кодом, написанным на C++, и кодом из Octave это использование оконной функции. В моем случае при расчете спектра оконная функция не используется. Перечитав статью про оконные функции увидел ключевую фразу: "сигнал на частоте W1 будет не заметен под боковым лепестком сигнала с частотой W0". Надеюсь именно в этом и заключается моя проблема...
Единственное различие, которое я сейчас вижу между своим кодом, написанным на C++, и кодом из Octave это использование оконной функции. В моем случае при расчете спектра оконная функция не используется. Перечитав статью про оконные функции увидел ключевую фразу: "сигнал на частоте W1 будет не заметен под боковым лепестком сигнала с частотой W0". Надеюсь именно в этом и заключается моя проблема...
- Бахурин Сергей
- Администратор
- Сообщения: 1119
- Зарегистрирован: 05 окт 2010, 19:55
- Контактная информация:
Re: программный перенос спектра
Окна не влияют на перенос спектра, только на его форму при растекании боковых лепестков
Re: программный перенос спектра
Причина "искажений" крылась в дисбалансе квадратур комплексного сигнала, принимаемого с SDR приемника. На этом же форуме удалось найти обсуждение одного из алгоритмов коррекции данного дисбаланса: viewtopic.php?t=103, также нашел более подробное обсуждение алгоритма на другом форуме: http://www.cqham.ru/forum/archive/index ... 5-p-2.html.
До полноценной реализации алгоритма Виндиша мне пока далеко, однако в своей программе я смог учесть постоянную составляющую (dc offset), которая и искажала спектр при частотном сдвиге сигнала.
Решение проблемы тривиальное - из квадратурного сигнала надо вычесть эту "постоянную составляющую".
На видео записан результат ручной коррекции дисбаланса квадратур. Бирюзовая окружность отображает уровень постоянной составляющей (центральный бин БПФ): https://www.youtube.com/watch?v=F62xyom ... e=youtu.be.
Фазовое рассогласование между квадратурами, конечно, остается, но пока что оно мне не мешает)
До полноценной реализации алгоритма Виндиша мне пока далеко, однако в своей программе я смог учесть постоянную составляющую (dc offset), которая и искажала спектр при частотном сдвиге сигнала.
Решение проблемы тривиальное - из квадратурного сигнала надо вычесть эту "постоянную составляющую".
На видео записан результат ручной коррекции дисбаланса квадратур. Бирюзовая окружность отображает уровень постоянной составляющей (центральный бин БПФ): https://www.youtube.com/watch?v=F62xyom ... e=youtu.be.
Фазовое рассогласование между квадратурами, конечно, остается, но пока что оно мне не мешает)