![]() |
|
![]() ![]() ![]() |
|
Pavia |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
vedun,
Я под ПФ- имел ввиду Преобразование Фурье, те расчёт коэффициента Фурье для заданной частоты. По сути это корреляция сигнала с sin и cos заданной частоты. С полосой не скажу, толи 1 Гц толи стремится к нулю. Это сообщение отредактировал(а) Pavia - 3.3.2012, 13:25 |
|||
|
||||
vedun |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 23.12.2010 Репутация: 2 Всего: 2 |
|
|||
|
||||
Kpeved |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 26.2.2012 Репутация: нет Всего: нет |
Вот такие ноты должны получится при идеальной настройке .
1) ми - 329,6 Гц 2) си - 246,9 Гц 3) соль - 196 Гц 4) ре - 146,8 Гц 5) ля - 110 Гц 6) ми - 82,4 Гц У меня же не строили - 6ая вниз , 2ая вверх . У вас получается что расхождение стабильно около 1 гц . Если на высоких это ещё приемлемо , то на низких не очень . Частоты vedun мне больше нравятся . Но 8192 - это очень много Это только целая секунда чтобы снять значения . Не пострадает ли точность если мы снимем 2048 и забьём все до 8к нулями ? Вы кстати использовали оконные ф-ии хэмминга , блекмэна ? |
|||
|
||||
Pavia |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
Kpeved,
Частота в вашей гитаре не равномерная. Уменьшаешь размер буфера частота меняется, растёт. Или сдвигаешь буфер тоже меняется. Это сообщение отредактировал(а) Pavia - 3.3.2012, 22:14 |
|||
|
||||
vedun |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 23.12.2010 Репутация: 2 Всего: 2 |
![]() Вообще трудно сказать как померять частоту такого импульсного сигнала, возможно на переходных процессах происходят смещения частоты, а так как там установившегося режима нет, то и меряем мы не понятно что.
|
||||
|
|||||
Kpeved |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 26.2.2012 Репутация: нет Всего: нет |
vedun, а можешь поподробнее сказать про интерполяцию эту ? Может быть пример кода на каком нибудь с-образном языке )
Я сейчас пишу чтобы это все в нормальной граффической форме выводилось, поэксперементирую нормально и скажу результаты . Pavia, я сдесь раньше картинку из аудишна выкладывал . Впринципе хоршо видно что частота колебается +- , только она равномерная . Даже супер крутые педальки грешат тем сыграв 2 раза одну и ту же струну результаты будут немного отличаться . Я думаю надо брать что то среднее после нескольких замеров - тесть точность будет постепенно расти . Можно кстати узнать как вы выделяли основную гармонику ? Когда я замерял гармоники скакали как бешеные и частота всегда получалась в 2 - в 3 потом снова в 2 - раза больше . Или вы опирались на возможный диапазон настройки? |
|||
|
||||
Pavia |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
Kpeved,
Где-то у меня был код, но что-то он не попался поэтому делал на глазок, указывая диапазон где искать максимум. А вообще раньше пользовался таким кодом. В частотной области после БПФ. По памяти так отступаем 5 Гц (в вашем случае я бы пропустил 20Гц), так как там обычно большая горка. Далее берём производную и ищем перепад знака с - на +. Первый перепад это и будет первая гармоника. А да для надежности ещё перед производной применяю простое сглаживание фильтром [1 2 1]. и использую порог чтобы отсечь лишний шум. Ещё можно через адаптивный порог делать, но его я не пробовал. Вернее для этих целей не пробовал пробовал для других. У адаптивного порога настройка хуже в виду нелинейности порога. А да перед БПФ надо удалять постоянную составляющую. У вас видимо галочка стоит и горки нет. Набрал код по новый.
Это сообщение отредактировал(а) Pavia - 4.3.2012, 22:25 |
|||
|
||||
vedun |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 23.12.2010 Репутация: 2 Всего: 2 |
|
|||
|
||||
Kpeved |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 26.2.2012 Репутация: нет Всего: нет |
Большое спасибо за ответы
![]() Pavia, а что ещё за постоянная составляющая ? И каким образом можно фильтр реализовать ? Вообще не шарю в VB но предположу что на 21 вы проверяете значение на пик ,а потом передаете в DetectF временной массив и частоту +- 5 знач от пика ? Пока ещё не совсем понимаю что эта ф-я делает .. точнее совсем не понимаю .. vedun, Да , вроде понял ). находим а, б , а потом по формуле . Ну а как найти этот пик ? как делал Pavia? я ещё поэксперементировал с граффиками - вобщем если забить часть нулями то уменьшается амплитуда сигналов , но пики все ещё очень хорошо видны . Вот только мне кажется возникнут погрешности при интерполяции Как кстати оконные ф-ии блэкмена , хемминга могут влиять на интерполяцию ? |
|||
|
||||
Pavia |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
Kpeved,
Убираем постоянную составляющую так. r:=Mean(aa); // вычисляю среднее sub(aa,r); // вычитаю по поэлементно. Теорию особо не встречал это чисто из практики. Это Delphi.
Да всё верно, пик проверяю через нахождение второй производной. Интерполяция это попытка отгадать, что там между двумя отсчётами. Наиболее правдивое это, то что я делаю через корреляцию с заданной частотой(Преобразование Фурье). Добавление нулей делает определённые предположения о том что между отсчётами, но это далеко от правды. |
|||
|
||||
vedun |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 23.12.2010 Репутация: 2 Всего: 2 |
![]() |
|||
|
||||
Kpeved |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 26.2.2012 Репутация: нет Всего: нет |
Вот какие у меня результаты получились . Выделял первый пик , а потом находил вершину параболы .
Всего отсчетов -4096, ЧД 8000. Ни окна ни порги не использовал 1. 329.1 2. 251 3. 196.3 4. 147.47 5. 110.37 6. 81.1 для 8192 ЧД 8000 1. 328.6 2. 251.46 3. 194.83 4. 146 5. 109.87 6. 80.57 для 16384 ЧД 8000 1. 328.37 2. 251.7 3. 194.56 4. 146.2 5. 109.6 6. 80.32 да , скорее всего частота скачет туда сюда .Думаю эта точность до десятых - сотых нам ничего не скажет Ещё потом попробую через ещё одно преобразование фурье , если его пойму .. Может быть кстати правильней на нормальном генераторе попробывать .. |
|||
|
||||
Kpeved |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 26.2.2012 Репутация: нет Всего: нет |
Протестил с простеньким генератором .
Вот сдесь вот записал как раньше с микрофона http://dl.dropbox.com/u/29529555/8k%20gen.rar Чд 8000 частоты были такие : 90, 135, 200, 300, 400, и телефонный гудок , частота которого должна была быть 440гц , но мне кажется меньше) результаты : 2048 отсчетов: 91.88 134.82 201.2 302.76 400.4 427.75 4096: 90.84 135.76 200.2 299.8 399.4 426.76 8192: 90.34 135.26 200.69 300.3 398.9 426.27 16384: 90.04 135.01 199.95 300.05 399.17 426.5 Было бы интересно посмотреть на результаты со вторым преобразованием с различным кол-вом отсчетов .) |
|||
|
||||
Pavia |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
Использую Хэмминга. 2048
1) 90.08 2) 134.99 3) 200.01 4) 300.01 5) 399.01 6) 426.37 Использую Хэмминга. 4096 1) 90.00 2) 134.99 3) 200.15 4) 300.00 5) 399.01 6) 426.33 Использую Хэмминга. 8192 1) 89.93 2) 135.01 3) 200.01 4) 300.00 5) 399.00 6) 426.34 Без окна 2048 1) 90.12 2) 135.00 3) 200.01 4) 300.01 (вначале по пал на пик 175.5 увеличел порог) 5) 399.02 6) 426.35 Без окна 4096 1) 89.99 2) 134.99 3) 200.11 4) 300.00 5) 399.01 6) 426.34 |
|||
|
||||
Kpeved |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 26.2.2012 Репутация: нет Всего: нет |
Pavia, Спасибо большое .
Очень интересные результаты ) Ваш алгоритм поточнее получается .С хеммингом так вообще лучше не придумаешь . |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |