реклама на сайте
подробности

 
 
> Модифицированный алгоритм Герцеля
Lost_Viking
сообщение Jan 21 2016, 05:58
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 168
Регистрация: 25-04-08
Пользователь №: 37 091



Взялся за реализацию. Прочитал про алгоритм тут: dsplib
Написал такую реализацию:
Код
#define Fd 9000 //частота дискретизации
#define f1 600  //частота тона
#define f_search 600 //искомая алгоритмом частота
#define N 70 //размер массива
int main()
{
unsigned char ADC[350]; //Массив, эмулирующий поток из АЦП
unsigned char buff[N]; //Буфер, в который пишутся данные из АЦП
float I[2];
float Q[2];
float a;
float b;
float c = 2* M_PI *f1/Fd; //Заранее рассчитаем то, что не будет меняться
float module; //здесь будет лежать модуль комплексного числа
I[0]=0; I[1]=0; //инициализируем массивы
Q[0]=0; Q[1]=0;
for (int i =0; i<350; i++)
{
    ADC[i] = (unsigned char) 100*sin(c*i)+100; //заполняем "поток" АЦП синусом с амплитудой от 0 до 100

}

a=cos(2*M_PI*f_search/N); //рассчитываем к-ты
b=sin(2*M_PI*f_search/N);

for (int n=0; n<70; n++) //начальное заполнение буфера
{
    I[0]=I[1]; //Готовим предыдущее I
    Q[0]=Q[1];
    buff[n]=ADC[n]; // Просто заполняем буфер данными из АЦП
    I[1]=a*(I[0]+buff[n])-b*Q[0]; //Все по формуле 16 из статьи
    Q[1]=a*Q[0]+b*(I[0]+buff[n]);

}
for (int n=70; n<350; n++) //Когда буфер заполнился, то запускаем цикл с выталкиванием
{
    I[0]=I[1];
    Q[0]=Q[1];
    I[1]=a*(I[0]+ADC[n]-buff[0])-b*Q[0]; //В качестве i(n) выступает ADC(n), где n=70. Следовательно buff(n-N)=buff(0)
    Q[1]=a*Q[0]+b*(I[0]+ADC[n]-buff[0]);
    for (int nn=0; nn<69; nn++) //перемещаем элементы массива на 1 влево
    {
        buff[nn]=buff[nn+1];
    }
    buff[69]=ADC[n]; //Заносим полученное значение АЦП на данном цикле работы алгоритма в последний эллемент буфера
    module = sqrt(I[1]*I[1]+Q[1]*Q[1]); //вычисляем модуль комплексного числа
}
//конец работы алгоритма
}

Для удобства чтения скрин из саблайма: screenshot

В итоге имею изменяющийся модуль, хотя, как я понимаю, его значение должно быть постоянным и максимальным про наличии искомой частоты:

Скрин вывода программы переменной module:screenshot

Что я делаю не так?

Сообщение отредактировал Lost_Viking - Jan 21 2016, 08:19
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Lost_Viking   Модифицированный алгоритм Герцеля   Jan 21 2016, 05:58
- - ViKo   На елку такие скриншоты можно вешать, и гирлянды н...   Jan 21 2016, 06:17
|- - Lost_Viking   Цитата(ViKo @ Jan 21 2016, 09:17) На елку...   Jan 21 2016, 07:54
- - ViKo   В книге Р. Лайонса "Цифровая обработка сигнал...   Jan 21 2016, 08:13
- - Lost_Viking   Да, он там описан. И тот алгоритм работает как над...   Jan 21 2016, 08:20
|- - petrov   Практически алгоритм не работоспособен в конечной ...   Jan 21 2016, 09:10
- - Lost_Viking   То есть округление до целого даст нарастание ошибк...   Jan 21 2016, 09:23
|- - petrov   RE: Модифицированный алгоритм Герцеля   Jan 21 2016, 09:31
|- - Lost_Viking   Цитата(petrov @ Jan 21 2016, 12:31) А зд...   Jan 21 2016, 11:02
|- - petrov   Цитата(Lost_Viking @ Jan 21 2016, 14:02) ...   Jan 21 2016, 11:09
||- - Lost_Viking   Цитата(petrov @ Jan 21 2016, 14:09) Демпи...   Jan 21 2016, 11:39
|- - ViKo   Цитата(Lost_Viking @ Jan 21 2016, 14:02) ...   Jan 21 2016, 11:46
- - Lost_Viking   Наверное тогда лучше так: Скользящее ДПФ   Jan 21 2016, 09:42
|- - petrov   Цитата(Lost_Viking @ Jan 21 2016, 12:42) ...   Jan 21 2016, 10:29
- - Lost_Viking   Все равно мне не ясно как может конечная разряднос...   Jan 21 2016, 16:28
- - Lost_Viking   Так, нашел один косяк. Аргумент косинуса и синуса ...   Jan 21 2016, 17:32
- - Lost_Viking   Похоже, что никто помочь не может. Жаль   Jan 22 2016, 13:45
|- - andyp   Цитата(Lost_Viking @ Jan 22 2016, 16:45) ...   Jan 24 2016, 19:00
- - Lost_Viking   Так, разобрался. Алгоритм полностью рабочий, несмо...   Jan 23 2016, 12:15
|- - ViKo   Цитата(Lost_Viking @ Jan 23 2016, 15:15) ...   Jan 23 2016, 12:51
|- - petrov   Цитата(Lost_Viking @ Jan 23 2016, 15:15) ...   Jan 23 2016, 20:40
- - TSerg   Ну.. я не знаю уж.. Как-тщ со студентами занимался...   Jan 24 2016, 20:47
- - Lost_Viking   Чуть позже отпишусь, когда все отлажу. Ждите. все...   Mar 3 2016, 16:10
- - Lost_Viking   Записал видео с своей реализацией https://youtu.be...   Mar 4 2016, 13:53
- - petrov   Цитата(Lost_Viking @ Mar 4 2016, 16:53) З...   Mar 4 2016, 15:36


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 15:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.0138 секунд с 7
ELECTRONIX ©2004-2016