Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как определить точную частоту звукового сигнала, какой алгоритм лучше использовать ? 
:(
    Опции темы
Kpeved
Дата 6.3.2012, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 26.2.2012

Репутация: нет
Всего: нет



Pavia,  а что у вас делает функция Amp(x)? вычисляет корень из суммы квадратов реальной и мнимой части? 
PM MAIL   Вверх
Pavia
Дата 6.3.2012, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 6.12.2008

Репутация: 11
Всего: 12



Да. 
PM MAIL   Вверх
Kpeved
Дата 6.3.2012, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 26.2.2012

Репутация: нет
Всего: нет



Ффу , наконецто в С переписал ... Результаты просто поражают . показатели расходятся +- 0.1 Гц при учёте того что я беру 2000 значений из нужных 4х )) . И при увеличении массива точность не меняется ! smile 

Ещё раз всем спасибо за помощь . ) smile 
PM MAIL   Вверх
vedun
Дата 7.3.2012, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 23.12.2010

Репутация: 2
Всего: 2



Раскажите на каком алгоритме вы остановились ?
PM ICQ Skype Jabber   Вверх
Kpeved
Дата 8.3.2012, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 26.2.2012

Репутация: нет
Всего: нет



vedun, на подборе частоты с помощью синуса и косинуса . Другими словами алгоритм
Pavia ) .  Впринципе судить только по синусоидальному сигналу (которые я выложил выше ) нельзя , т как у гитары там набор синусоид , косинусоид и непонятно чего , но если выбирать между этим алгоритмом и параболой то он намного точнее . Самой по себе параболы быть не может - фронт и спад у неё разные + погрешности самого преобразования 
PM MAIL   Вверх
Kpeved
Дата 8.3.2012, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 26.2.2012

Репутация: нет
Всего: нет



Блин , ещё одна небольшая проблема возникла . Взял акустику , и решил так же сделать пару записей разных нот . Делаю преобразование от этого массива по 2000 знач с ЧД 8000, и пока амплитуда максимальная ( первые пол секунды - секунда)  граффик фурье просто обрезается где то на 100- 500 Гц . Пики до этого момента сохраняются , а потом просто идёт сплошной ноль (на самом деле что то в районе 0 +-5 )

вот , на скрине все видно . 
user posted image

сам фурье брал вот отсюда http://psi-logic.narod.ru/fft/fft6.htm

П.с  На самом деле акустика намного громче электрики ). Микрофон был в 20см . Может он просто не воспринимает такую амплитуду и что то обрезает , искажает сигнал? или может слишком большие числа для фурье и дело в нем?

Это сообщение отредактировал(а) Kpeved - 8.3.2012, 17:57
PM MAIL   Вверх
Pavia
Дата 9.3.2012, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 6.12.2008

Репутация: 11
Всего: 12



Kpeved
Сигнал после Фурье принято выводить в дБ в виду того что амплитуда может быть очень большой или очень маленькой (0.000001).
Во вторых тот листинг что вы взяли для 2 в степени N, а у вас массив в 2000.
PM MAIL   Вверх
Kpeved
Дата 9.3.2012, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 26.2.2012

Репутация: нет
Всего: нет



Да ,были небольшие ошибки в коде из -за особенностей с++. Все переделал и сделал по дБ с логарифмической шкалой - да , намного удобнее . Сам по себе звуковой сигнал затухает логарифмом , поэтому на граффике все плавно и хорошо видно ) 

С массивом в 2000 вполне хорошо справляется - точность от этого не страдает , ведь мы только выделяем нужную частоту , а потом уже её уточняем .Разницы большой нет если бы мы сразу взяли от 2К фурье - просто так на граффике разброс побольше  .)
PM MAIL   Вверх
Santik
Дата 13.3.2012, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 13.3.2012
Где: Мирный (Якутия)

Репутация: нет
Всего: нет



Цитата(Pavia @ 3.3.2012,  21:17)
Kpeved
Частота в вашей гитаре не равномерная. Уменьшаешь размер буфера частота меняется, растёт. Или сдвигаешь буфер тоже меняется.

А если взять экспоненциально затухающий синус с генератора? Мне кажется этот эффект останется! 
(Или эмулировать)

Это сообщение отредактировал(а) Santik - 13.3.2012, 12:58
PM MAIL   Вверх
Santik
Дата 13.3.2012, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 13.3.2012
Где: Мирный (Якутия)

Репутация: нет
Всего: нет



Цитата(vedun @ 3.3.2012,  12:59)
Цитата(Pavia @ 3.3.2012,  12:21)
Но видимо из-за упругости струны часта плавает в пределах 1 Гц. Постепенно уменьшаясь. Но у вас всё равно на 1-2 ГЦ больше.
 А что от этого частота может менятся ? Мне казалось что параметры струны влияют только на скорость затухания звука а не на его частоту.

Я тоже думаю, что упругость струны тут не при чём. Такой же эффект наблюдается и в протонных магнитометрах. Но там частоту считают с точностью 0.001 Гц

Это сообщение отредактировал(а) Santik - 13.3.2012, 21:42

Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  1.rar 634,33 Kb
PM MAIL   Вверх
Pavia
Дата 13.3.2012, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 6.12.2008

Репутация: 11
Всего: 12



Проверил чисто математически без преобразователей динамик-микрофон
Код

for i:=0 to n-1 do
 begin
 w:=Round(127*exp(-0.0005*i)*sin(2*Pi*f*i/N+fi));
 data[0][i]:=w;
 end;

Эффекта уплывания частоты нет.
Более того я данные с гитары пробовал выравнивать по амплитуде эффект отсройки частоты сохранялся. 
То есть мой алгоритм детектирования частоты не зависит от амплитуды. 

Это сообщение отредактировал(а) Pavia - 13.3.2012, 21:46
PM MAIL   Вверх
Santik
Дата 13.3.2012, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 13.3.2012
Где: Мирный (Якутия)

Репутация: нет
Всего: нет



Надо подумать. Может вид огибающей неправильно выбран. Я то всегда думал, что это из-за амплитудной модуляции эффект. В магнитометрах сдвиг около 0.002 Гц приблизительно.
PM MAIL   Вверх
vedun
Дата 13.3.2012, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 23.12.2010

Репутация: 2
Всего: 2



Цитата(Santik @ 13.3.2012,  22:02)
Надо подумать. Может вид огибающей неправильно выбран. Я то всегда думал, что это из-за амплитудной модуляции эффект. В магнитометрах сдвиг около 0.002 Гц приблизительно.
 Несколько раз наблюдал эфект "затягивания" частоты в полосовых фильтрах при прохождении через них радио импульсов. Если частота импульса не совпадает с центральной частотой фильтра то во время переходного процесса частота импульса немного смещается, это хорошо видно на фазовой плоскости. Вместо растущего вектора получается завиток типа поросячего хвоста smile Возможно в вашем магнетометре происходит нечто подобное.
PM ICQ Skype Jabber   Вверх
Pavia
Дата 13.3.2012, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 6.12.2008

Репутация: 11
Всего: 12



Santik
По мерил один вслеск с некоторым шагом.
484.1473
484.1523
484.1524
484.1526
484.1527
484.1528
484.1528
484.1495
Ошибка измерения
+-0.0020
Тут частота стабильная в приделах метода. 
То что тут плавает это из за того что у нас частота дискретизации не кратна измеряемой. В моем методе это не учитывается. А ещё это я без оконной функции сделал, так что эффект Гиббса присутствует(скорее всего это он и есть).

Если попадает два импульса в один буфер, то  тут из за разной частоты или разных начальных фаз будет нестабильность.
484.1084
484.0920
484.0878

С дискретизацией напутал.

Это сообщение отредактировал(а) Pavia - 14.3.2012, 07:19
PM MAIL   Вверх
Santik
Дата 13.3.2012, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 13.3.2012
Где: Мирный (Якутия)

Репутация: нет
Всего: нет



Что- то совсем не те частоты получились!
Магнитное поле около 62000Нт и частота должна быть 62000/23.8=2605 Гц
Да и на мой "немузыкальный" слух это на телефонный гудок непохоже (440 Гц) smile 
Да и данные - это измерения в движении по конкретному профилю, а не в точке, так что ошибку не корректно так считать. Даже если в точке - всё равно надо вычитать естественные вариации магнитного поля.

Это сообщение отредактировал(а) Santik - 14.3.2012, 00:02
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.1341 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.