DFT in C ...

Тема в разделе "WASM.AUDIO", создана пользователем Andrei, 3 май 2018.

  1. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Сделал sqrt(), стало лучше здесь нечетная (видно что спектр немного размазан), здесь четная ...
    В общем все равно не идет примерно в 15 раз, можно тупо разделить на 15, но хотелось бы
    понять что это за 15 и откуда оно взялось ???

    Я так понимаю что это число отсчетов/4, N/4=16 ...
     
  2. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    У нас это было ТЭЦ (Теория Электрических Цепей), да в основном аналоговых, ...
     
  3. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
  4. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Если я разложу сигнал в спектр , удалю ненужную составляющую, а потом сделаю обратное преобразование,
    то на выходе я получу сигнал с вырезанной несушкой ?????
     
  5. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Не совсем. Получите близкий к ожидаемому результат, но неточный, т.к. полное вырезание только одной составляющей подразумевает, что у вашего фильтра будет бесконечный отклик.
    Чтобы вырезать какую-то частоту в ноль, лучше воспользоваться рекурсивным notch-фильтром с высоким Q и бесконечной импульсной характеристикой (БИХ). По вычислительным затратам это будет куда более оправданным решением задачи.
     
  6. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Не совсем. ДПФ - это КИХ а не БИХ. Со всеми вытекающими последствиями.

    Вы бы учебник что-ли открыли. Чтобы неусушку удалить надо сигнал во временной области множить. Либо в частотной смещать.
     
    Andrei нравится это.
  7. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Всё правильно, я это и имел в виду. Поэтому результат и получится неточным. При этом, КИХ-фильтры имеют очень плохое разрешение в области низких частот (которое можно компенсировать за счёт повышения порядка свёртки), а БИХ-фильтры лишены этого недостатка.
     
  8. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    860
    Andrei, умножение в одной области эквивалентно свертке в другой.
    Несущая в частотной области - это дельта функция, поэтому свертка с ней эквивалентна сдвигу. В частотной области это обозначает сдвиг спектра из отрицательных частот в 0 частоту т.к. спектр симметричен относительно 0. Для вычислений эффективнее умножать во временной области (модулировать), чем сворачивать в частотной, также нужно использовать ФНЧ фильтр для подавления паразитных частот после демодуляции. Это называется синхронное детектирование (демодуляция):
    modulation.gif
    Если бы ты работал на бесконечности то да, в противном случае когда ты убираешь компоненты из спектра - это равносильно тому что делать круговую свертку твоего куска и куска вырезаемой области. Можно просто дополнить нулями буфер до двойной длины (чтобы круговая свертка стала линейной), а потом просто складывать перекрывающиеся куски.
    Вообще удаление ненужных составляющих можно поручить к примеру режекторному БИХ фильтру, нарисуй диаграмму нулей и полюсов в z-плоскости для биквадратного фильтра (вообще самый простой случай БИХ фильтров), выведи коэффициенты и оценивай насколько хорошо/плохо вычленяется нужный сигнал. Можно объединить несколько каскадов если несколько частот нужно удалить или повысить добротность.
     
  9. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Вот еще вопрос, на входе сигнал то ведь +1 : -1, значит спектр тоже должен быть +1:-1 Так ведь ???
    Куда отрицательная часть спектра девается ????
     
  10. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Учебник, какой УЧЕБНИК, Весна, ... и все такое
     
  11. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    С днем радио и всех отраслей связи!!!
    Не забываем про стакан !!!
     
  12. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    860
    Спектр - это модуль, он не может быть отрицательным (если речь не о фазе, а об амплитуде). Когда ты производишь дискретное ПФ, то не забывай что у тебя энергия распределяется зеркально относительно половины частоты дискретизации, так что энергия делиться пополам.
     
    Andrei нравится это.
  13. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Я так понял, что отладку на mega644 нужно сделать, с попробовать с частотой дискретизации 8-10 кГц...
     
  14. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Да я понял, про зеркальный канал приема ....
     
  15. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    При чём тут зеркальный канал приёма?
    Вам говорят, что АЧХ вашего DFT будет чётной функцией относительно постоянной составляющей, а ФЧХ - нечётной, так как входной сигнал вещественный.
     
  16. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    А как сдвигать постоянную составляющую ?, допустим мне за НОЛЬ нужно взять 30 кГц.
    То есть смотреть смотреть спектр относительно 30 кГц, а не нуля. Дискретизация при этом
    100 кГц ...
     
  17. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Ну так это, ежели данный спектр пропустить через ФНЧ, основной и зеркальный наложатся друг на друга, так как отрицательной частоты не бывает, ... собственно для SSB
    зеркальный канал является нежелательным, поскольку частота одного канала 0,3-3,4 кГц

    В технике DCR называется зеркальный канал приёма, в принципе прямое детектирование и есть дискретизация, аналогового сигнала,.

    Алгоритм DCR с приёмом зеркального канала

    1.Полосовой фильтр
    2.Дискретизация
    3.ФНЧ

    Все это легко реализуется на FPGA(ЦПЛД) Altera, Xilinx, но мы не ищем легких путей, ...
    У меня идея фикс сделать это на AVR )))
     
    Последнее редактирование: 9 май 2018
  18. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    То есть, если дискретизировать сигнал с частотой, 7 Мгц, а потом сделать DFT, то можно выделить каналы ТЧ,
    это чисто теоретически...., я пока не пробовал, ...
     
  19. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Спектр через ФНЧ не пропускается. Пропускается аналоговый сигнал. А спектр характеризует этот аналоговый сигнал. Если вы пропустите аналоговый сигнал через ФНЧ, то спектр его изменится таким образом, что положительные частоты выше частоты среза будут затухать, как и отрицательные частоты ниже отрицательной частоты среза. Но отрицательные частоты никуда не денутся.
    Вы сейчас говорите про временную составляющую, путая её с частотной. Отрицательные частоты - это математическая абстракция.

    Ну вперёд. Только теорию DSP надо подтянуть. Книгу вам уже посоветовали.
     
  20. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Каналы ТЧ можно выделить и путём обычной модуляции.
     
    Andrei нравится это.