DFT in C ...

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

  1. Andrei

    Andrei Member

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

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Так значит ОКНО это Один Отсчет ? Окно через которое реальный сигнал попадает в MCU для обработки ???
     
  3. SadKo

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

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    У меня есть русский вариант в печатном издании. Читается очень легко, так как нет кучи ненужного и неинтересного матана.
    Выглядит примерно так:
    https://www.books.ru/books/tsifrova...lya-inzhenerov-i-nauchnykh-rabotnikov-612048/
    Только, боюсь, печатные версии уже все распроданы.
     
    UbIvItS нравится это.
  4. SadKo

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

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Я же кидал ссылку на википедию. Конкретно по Стивену Смиту вот окно:
    http://www.dspguide.com/ch16/1.htm
     
  5. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    860
    Да. Вот если ты все вектора возьмешь и сложишь во времени то получишь исходный сигнал.
    [​IMG]

    Один отсчет (семпл), а окно это какой-то набор семплов промодулированных оконной функцией. Если ты просто берешь часть данных, то считай что ты берешь и умножаешь все на 1. К примеру ты берешь FFT 1024, получается ты берешь бесконечный периодический дискретный сигнал и первые 1024 отчета умножаешь на 1, остальные на 0. Получается прямоугольник.
     
    Jin X, Коцит, Pavia и ещё 1-му нравится это.
  6. Andrei

    Andrei Member

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

    Andrei Member

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

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    И все таки, допустим имеем на входе сигнал с уровнем +1,-1 Вольт.
    Почему с использованием вышеприведенной программы спектр отображается с уровнями 150-250 ...
    Что это Вольты?, Или не правильный расчет ?????
    https://scontent-arn2-1.xx.fbcdn.ne...=6fbd784fd1b8963be4b56f9279c06538&oe=5B518D77
    Если на входе синус с размахом 1 вольт, то в спектре должно быть ну никак не больше, в чем ошибка ???
    Почему вычисленное значение много больше исходного ????? Если ошибка то какая???
     
    Последнее редактирование: 5 май 2018
  9. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    860
    Во-первых, нормализации нет и поэтому величина зависит от количества входных отсчетов. Во-вторых, неправильно считается модуль комплексного числа sqrt(r^2 + i^2).
     
    Andrei нравится это.
  10. Andrei

    Andrei Member

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

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    860
    http://www.dspguide.com/ch8/5.htm
     
  12. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Ок, Thetrik , а Вы можете посмотреть методику программирования фильтров ЗДЕСЬ ...
    Интересует Ваше мнение
     
  13. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Кац предлагает сдаться !!!!!
    Русские не сдаются ...., только практика спасет отца русской демократии...!!!
     
  14. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Нашел в сети программу генерации отсчетов , но что то не то получается вот код
    Код (C++):
    1.  
    2. float samplerate; // частота дискретизации
    3. float wavefrequency; // частота
    4. float wavevolume; // уровень
    5. int samplelenght // кол-во отсчетов АЦП
    6. float period=samplerate/wavefrequency/2; //вычисляем период
    7. float pi=3.14; //число pi
    8. int n;
    9. for(int a=0;a<samplelenght;a++) //устанавливаем цикл на количество отсчетов
    10. {
    11. n=wavevolume*sin(a*pi/period); //вычисление значения отсчета
    12. buffer[a]=n; //заносим вычисленное значение в буфер
    13. }
    14.  
     
  15. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Если нанять репетитора это будет продуктивнее.
     
  16. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    860
    Я даже не знаю, 6 страниц читать нет желания. Фильтры программируются исходя из задачи. К примеру я делал фильтр для синтезатора, мне вполне хватало MA фильтра, и БИХ 2-го порядка. Для вокодера я использовал FFT для эквализации. Если нужен какой-то определенный фильтр, к примеру узкополосный убирающий 50гц, то используются другие методы расчета. Также все зависит от требуемой ФЧХ. Можешь сразу рассчитывать в z-плоскости, нули соответственно спады, а полюса подъемы на АЧХ вдоль единичной окружности:
    Project013.gif
     
  17. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    860
    У тебя wavevolume = 0.
     
    Andrei нравится это.
  18. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Репетитора мне уже поздно, буду читать Смита DSP ...
    И пробовать на AVR(atmel)
     
  19. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Ну не было у нас ЦОС, специальность 200900 аutomatic switching...
     
  20. SadKo

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

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    У меня такая специальность. ЦОС не было, но вот по аналоговым цепям нас гоняли. И аналоговая фильтрация сигналов была.
    А чтобы сделать из аналогового фильтра цифровой, надо просто перенести все нули и полюсы из плоскости Лапласа в Z-плоскость.
     
    Andrei нравится это.