Перенос на Win

Тема в разделе "WASM.SOFTWARE", создана пользователем Andrei, 10 июн 2018.

  1. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Вопрос не по теме но все таки, в программе есть два фильтра один даёт сдвиг +45, другой -45
    Какие есть средства расчета фильтров с заданием фазы сдвига выходного сигнала ? Или фильтр отдельно делается , а сдвиг отдельно ?
     
  2. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.241
    Андрей, а что тебе мешает взять сорцы под вынь?
     
    Andrei нравится это.
  3. SadKo

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

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

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Да нету их под win, автор начал делать и забросил,
     
  5. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Алгоритм то какой ?
    1. Делаем FFT
    2. Делаем фильтр
    3. Делаем обратное FFT

    То есть сдвиг фазы, делаем через FFT ?
     
  6. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.241
    так есть альт варианты..
    https://git.videolan.org/
    https://github.com/obsproject/obs-studio
    всё енто под вынь собирать можно. Вообще, куча фосса собирается под вынь и работает дажь лучше, чем в лине :)
     
    Andrei нравится это.
  7. Andrei

    Andrei Member

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

    А ты не знаешь какой нибудь простецкий диктофон под WIN, с открытым кодом ?
     
    Последнее редактирование: 16 июн 2018
  8. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    875
    Andrei, капец на 7 страниц. Ответ был дан почти месяц назад:
    В той же теме были даны примеры. Что конкретно не получается?

    Любой КИХ фильтр рассчитывается элементарно. Задается АЧХ и ФЧХ, производится ОПФ - это и есть ядро фильтра. Для ядвига на 90 градусов применяется преобразование Гилберта.
     
    Andrei нравится это.
  9. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Для кого элементарно, а для кого еще пока не очень, не обижайся я пока только еще разбираюсь со всем этим
    ОПФ , а вначале ДПФ нужно делать ? делаем фильтр, и ОПФ
    Или всетаки

    ДПФ -> фильтр Хемминга ->ОПФ
     
  10. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Конкретно, объясню я вот на гитаре также играю, ....
    Нот не знаю, и по нотам не смогу ничего сыграть, а вот если покажут как то запросто, так и тут
    Гитара (копм) , Ноты (документация)
     
  11. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    875
    Нет. Вот есть у тебя два массива в один заносишь ФЧХ в другой АЧХ. Далее переводишь из этого представления в комплексное, учитывая что АЧХ это модуль а ФЧХ аргумент комплексного числа. Потом делаешь ОПФ данного массива комплексных чисел и получаешь ядро фильтра. Это ядро не будет сходится к 0 на краях поэтому применяешь окно ( При желании выполняешь прямое преобразование Фурье если требуется посмотреть реальную характеристику после оконные функции). Да посмотри просто любой метод преобразования гильберта через дискретное преобразование фурье.

    В спектральной области делается всё тоже самое только через умножение вместо свертки.
     
  12. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    875
    http://www.dsplib.ru/content/hilbert/hilbert.html
     
    TermoSINteZ нравится это.
  13. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Ок
    В чем я могу рассчитать коэффициенты фильтра нужного мне порядка с заданным сдвигом фазы ?
    Имею ввиду программный продукт, допустим

    Мне нужен ФНЧ с частотой среза 2800 Гц, 8-го порядка, со сдвигом на выходе -45 градусов ...

    В WinFilter я могу это сделать ? Или в какой программе это можно сделать ?
     
    Последнее редактирование: 16 июн 2018
  14. Andrei

    Andrei Member

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

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Преобразование Гильберта это зануление отрицательной части, и увеличение в два раза положительной части, это правильно ?
     
  16. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    875
    Не знаю насчет софта, я бы сделал просто через БПФ, либо по готовым формулам.

    Да. Умножаешь на 2 потому что энергия в 2 раза уменьшается при занулении половины, ну еще крайние частоты без изменений:
    [​IMG]
     
  17. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    875
    Немного расскажу почему так получается. как ты наверное знаешь ДПФ принимает на вход комплексный сигнал и на выходе также получается комплексный сигнал. В реальных задачах обычно в действительную часть пишут сам сигнал, а мнимую обнуляют. ДПФ реального сигнала всегда симметрично относительно половины частоты дискретизации. Если записать 2 сигнала в действительную и мнимую часть то можно выполнить преобразование сразу 2-х сигналов за раз и используя свойство симметрии извлечь результаты. Так к примеру два сигнала sr и si после преобразования в Re и Im будут содержать смеси тех самых зеркальных спектров. К примеру Re[1] содержит как амплитуду Cos первой гармоники сигнала sr так и амплитуду -Sin первой гармоники сигнала si. Чтобы выделить гармоники нужно сделать (Re[1] + Re[n-1])/2 - синусы si из-за нечетной симметрии ликвидируются, а косинусы sr удвоятся, (Im[1] + Im[n-1])/2 тоже самое только si и sr меняются местами. Обнуляя область отрицательных частот мы находим такой сигнал что (Re[n - 1] + Im[n - 1]) = 0, т.е. тогда когда амплитуда cos гармоники sr равна амплитуде sin гармоники si и наоборот. Отсюда следует что sin и cos меняются местами, что соответствует сдвиг фаз на 90 градусов.
     
  18. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Да уж, не так все просто, как казалось, пилить мне долго придется, но можь оно и к лучшему ....
    Подскажи как через БПФ фильтры делать ?
     
  19. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    875
     
  20. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    875
    Почти все - следствия из одного базового принципа о котором неоднократно писал: свертка в одной области эквивалентна умножению в другой. Применение фильтра это что? Умножение спектров.