DFT in C ...

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

  1. SadKo

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

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

    Andrei Member

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

    Я имел ввиду полноценный овтономный прибор, имеющий сертификат госповерки и.т.д
     
    Последнее редактирование: 12 май 2018
  3. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Пролистал книгу DSP Стивена, но там не нашел, как программно реализуются
    фазовращатели спектра сигнала, допустим на входе 2 сигнала f1(x) нужно сдвинуть по фазе на 90 градусов,
    а f2(x) нужно сдвинуть на 0 градусов.
     
  4. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Можно ли сделать фазовращатель, по алгоритму, на входе f(x) сдвинуть на 90 градусов out(x), относительно f(x).
    Значит ли это что если я придержу f(x) T/4 (Fd/4) то получу out(x) со сдвигом 90 град ??
    То есть сделаю линию задержки, входного сигнала, на 1/4 частоты дискретизации, четверть периода
     
  5. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    868
    ПРЕОБРАЗОВАНИЕ ГИЛЬБЕРТА
     
  6. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Правильно ли я понял , чтобы сделать преобразование Гильберта, то нужно сделать ДПФ->ПГ->ОПФ ??
    А если мне нужен произвольный угол 36, 6 градуса ???
     
  7. Andrei

    Andrei Member

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

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Ладно попробую, сделать в начале в off line, файл на входе, файл на выходе...
     
  9. SadKo

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

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Убунтоводы не жалуются.

    Какой автономный прибор?
     
  10. SadKo

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

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

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Ну например, берем чистейший синус 15 кГц, с уровнем +1, -1 (по осциллографу), и подаём на вход вот этого аппарата,
    https://prist.ru/produce/card/meas.htm?id=749528080#t=main, какой уровень спектра он покажет ?
     
  12. SadKo

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

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Уровень - понятие относительное. В аудио уровень +/-1 принято считать как 0 dBFS. Что покажет спектрометр - надо читать документацию, всё может зависеть от его настроек.
     
  13. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Ну да лана, сложная это весчь дельта функция ..., с площадью = 1, уровнем -> б.б.в и длительностью -> б.м.в.
     
  14. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    868
    Считай это одиночным импульсом, в дискретном случае это одиночный семпл единичной амплитуды, просто на непрерывном интервале длительность импульса стремится к 0 а амплитуда соответственно растет (чтобы площадь осталась 1)
     
  15. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    868
    В каких единицах? Если в вольтах, то 1, если в децибелах то относительно какой величины? Если относительно 1В то покажет 0дБ.
     
  16. Andrei

    Andrei Member

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

    Andrei Member

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

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    У меня получилось что на все про все 5000 тактов есть ...,
     
  19. Andrei

    Andrei Member

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

    Ведь допустим у нас один сигнал на входе,

    1. Получаем семпл в буфер
    2. ДПФ
    3. ПГ // выделяем нужную полосу
    4. ОПФ
    5. Выдаём обработанный семпл
     
  20. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Модулятор.gif
    SSB модулятор, вот по этой схеме
    Код (Text):
    1.  
    2. ssb_mod {
    3.          int n=0;
    4.          int x,x1,x2,x3,x4,y1,y2,y3,y4;
    5.          int f_cos [4] {1,0,-1,0}
    6.          int f_sin [4] {0,1,0,-1}
    7.          int f_sin_m [4] {0,-1,0,1}
    8.          x=ADC; // получаем отсчет с ADC
    9.          x1=x*f_cos[n];
    10.          y1=x*f_sin_m[n];
    11.          x2=x1*f_cos[n];
    12.          x3=y1*f_sin[n] ;
    13.          x4=x2+x3;
    14.          out_I=x4; //вывод канал I
    15.          y2=y1*f_cos[n];
    16.          у3=x1*f_sin[n];
    17.          y4=y2+y3;
    18.          out_Q=y4; // вывод канал Q
    19.          if (n==3)
    20.                     {
    21.                      n=0;
    22.                      }
    23.                      else
    24.                            n++;
    25.       }
    26.                      
    27.  
    Будет ли это работать ??