Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Sergey Mudry                         2:5020/400     10 Feb 2003  18:02:33
 To : Zahar Kiselev
 Subject : нулевые значения функции
 -------------------------------------------------------------------------------- 
 
 Hello, Zahar!
 You wrote to Vladimir Vassilevsky on Mon, 03 Feb 2003 05:44:08 +0300:
 
  ZK>>> По причине того, что частота исходного сигнала может быть разной
 
 и
 
  ZK>>> может медленно "ползать" от нескольких сотен герц до пары
 
 килогерц
 
  ZK>>> - я  плохо себе представляю, как ТАКОЕ сделать.
  VV>>  Самая обыкновенная ФАПЧ с гетеродином и sin/cos каналами.
  VV>>  Для ускорения начального захвата можно оценить частоту с помощью
  VV>> простейшего частотного детектора.
  ZK> Как такое делается в виде электронной схемы - знаю и даже делал.
  ZK> А вот в виде программы - увы, я не настолько хороший
  ZK> программист...:(
 
 А смоделировать?
 Гетеродин ака синусоидальный генератор с переменной частотой можно
 сделать кучей способов (один из них приведен ниже).
 Фазовый детектор - можно сделать перемножителем с последующей
 фильтрацией результата.  (Есть более простой и тупой способ - гетеродин
 сделать прямоугольным, и запоминать отсчет исходного сигнала при
 переходе этого прямоугольника из 0 в 1, но такой ФАПЧ запросто может
 захватить половинную частоту.)
 Далее - фильтр нижних частот. Если не силен в DSP - тоже можно
 смоделировать LC-фильтр с почти идеальными характеристиками. Точные
 значения L и C подбери в каком-нибудь Microcap'е соответственно полосе
 захвата. Выписываешь формулы для напряжений и токов для каждого
 элемента, для резистора: (закон Ома) I=U/R; для конденсатора:
 I=C*(dU/dt); для катушки: U=L*(dI/dt). Как они соотносятся между собой и
 входными и выходными сигналами - смотри по схеме и законам Кирхгофа.
 А практически для каждой L и C вводишь по переменной, хранящей текущее
 значение Il и Uc соответственно, и на каждый отсчет исходного сигнала
 пересчитываешь по формулам
 Il:=Il+(dt/L)*Ul и Uc:=Uc+(dt/C)*Ic, здесь Il, Ul - ток и напряжение для
 катушки, Ul, Uc - то же для конденсатора, dt - период дискретизации, L и
 C - индуктивность и емкость соответственно.
 
 Кстати, синусоидальный генератор запросто можно сделать моделированием
 идеального колебательного контура. Имеем L и C, соединенные параллельно,
 C имеет некоторое начальное напряжение U0, начальный ток в катушке равен
 0. По законам Кирхгофа:
 Ul=Uc, Il=-Ic. Частота генерации равна f=1/(2*pi*SQRT(L*C)), амплитуда
 равна U0.
 Комбинируя все вышенаписанное, получим такой алгоритм (без оптимизации):
 
 === Cut ===
 dt:=1/44100
 C:=2.533e-6
 L:=1e-2
 U0:=1
 
 Uc:=U0
 Il:=0
 for i:=1 to 20000
    out[i]:=Uc
    Uc:=Uc-(dt/C)*Il
    Il:=Il+(dt/L)*Uc
 next
 === Cut ===
 При таких L и C частота будет около 1000 Гц, частота дискретизации -
 44100 Гц
 Я пробовал, даже с целочисленной 16-битной арифметикой получается
 красивый синус (если L и C брать в разумных пределах), с плавучкой
 совсем хорошо.
 
 With best regards, Serg, aka upx@nc.ru, upx@ukr.net
 --- ifmail v.2.15dev5
  * Origin: Donbass Internet Center DIPT (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 нулевые значения функции   Zahar Kiselev   01 Feb 2003 03:45:28 
 нулевые значения функции   Evgenij Masherov   01 Feb 2003 18:01:34 
 нулевые значения функции   Zahar Kiselev   01 Feb 2003 23:05:24 
 нулевые значения функции   Evgenij Masherov   03 Feb 2003 12:02:23 
 нулевые значения функции   Vladimir Vassilevsky   02 Feb 2003 06:11:26 
 нулевые значения функции   Zahar Kiselev   02 Feb 2003 07:52:58 
 нулевые значения функции   Vladimir Vassilevsky   03 Feb 2003 05:07:04 
 нулевые значения функции   Zahar Kiselev   03 Feb 2003 06:44:08 
 нулевые значения функции   Sergey Mudry   10 Feb 2003 18:02:33 
 нулевые значения функции   Dmitriy Yaroshevich   02 Feb 2003 04:48:38 
 нулевые значения функции   Zahar Kiselev   02 Feb 2003 10:46:00 
 Re: нулевые значения функции   Sergey Andrianov   06 Feb 2003 09:46:26 
Архивное /ru.algorithms/12005096c2503.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional