Перейти к содержанию
    

как это сделано: FFT4096, 100-6500Hz, freq.resolution 0.001Hz

Здравствуйте!

 

Помогите пожалуйста, спать не могу, все думаю......

 

Накопал в интернете, не понимаю как сделано. а хочется понять и применить методу.

 

короткая листовка: http://www.campbellsci.com/documents/produ...es/b_avw200.pdf

полный мануал: http://www.campbellsci.com/documents/manuals/avw200.pdf

 

 

Прибор определяет частоту синусоидального сигнала, который может быть в диапазоне 100 - 6500 Гц, с разрешением 0.001Гц и точностью 0.013% от измеренной величины. Указано что используется 4096-точечное FFT. Интересно, что еще кроме упомянутого FFT применяется для получения такого разрешения по частоте?

 

Как это может быть сделано? Взяли FFT, определили частоту грубо, потом детально обнюхали область вокруг найденной частоты, получили частоту точно?

 

 

Что абсолютно точно известно (это физика процесса):

1. Полезный сигнал- честная одночастотная синусоида (дернули струну, потом ищут ее частоту собственных колебаний. то есть это затухающее колебание механической струны, которое преобразовано в электрический сигнал). Шумы возможны.

2. Общая длительность исследуемого сигнала доли секунды (ну пусть 300 ms)

 

 

Что говорит изготовитель (интересный текст и какие-то картинки начинаются со страницы 85, еще есть спецификация на странице 9):

1. The AVW200 uses an audio A/D for capturing the sensor’s signal. The number of samples acquired in this period is 4096 points. A Fast Fourier Transform (FFT) algorithm is used to create a frequency spectrum.

2. the spectral analysis gives improved frequency resolution (0.001 Hz rms) during quiet conditions.

3. the AVW200 Fourier transforms the recorded response and analyzes the resulting spectrum to determine the wire’s resonant frequency. This analysis also provides diagnostic information indicating the quality of the resonant-frequency measurement.

4. Measurement resolution: 0.001 (Hz RMS)

5. Accuracy basic: +/- 0.013% of reading.

6. DF measurement time between 1.6 to 1.8 second

7. SYSTEM: PROCESSOR: Hitachi H8S 2324 (16-bit CPU with 32 bit internal core), MEMORY: Either 128 or 512 kbytes of SRAM; 2 Mbyte of OS Flash

8. частоту проца не знаю, но пишут про дополнительный ток потребления во время измерения 27mA@12V. Судя по даташиту проца получается что используется он по максимуму, 25 МГц тактовой.

 

 

Сразу оговорюсь, как учили меня 20 лет назад в институте так с тех пор ни разу ничего толком кроме чужой математики для ЦОС не применял. В-общем валенок и может быть это нужно в раздел для начинающих перетащить если что-то понятное любому ЦОС-нику спрашиваю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

может быть применен какой-н сплайн к спектральным составляющим fft

под п.2 можно понимать что угодно, хоть нейронные сети :D ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

.. спать не могу, все думаю..

За 300 мс можно измерить "методом захвата" с точностью 0.001 Гц, поищите, была такая тема в АВР МК.. и спите спокойно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

За 300 мс можно измерить "методом захвата" с точностью 0.001 Гц, поищите, была такая тема в АВР МК.. и спите спокойно.

 

Это переходы через ноль считать (zero-crossing counting method)? Не, неинтересно. Так работало старое поколение таких измерителей, их ахиллесова пята это шумы из-за которых лишние переходы. Кстати там разрешение на порядок меньше всегда анонсировалось (0.01Гц).

 

А про точность 0.001 методом захвата- это вы я так думаю погорячились. Ну во-первых нужно переименовать "точность" в "разрешение" (ну или говорить о стабильности 0.15ppm, что за АВР такой?), а во-вторых при 6.5 кГц это будет 23 пикосекунды разница в длительности периода. 44 наносекунды за 1950 периодов (300мс и 6500Гц). это 22 МГц тактирование таймера чтобы один такт набежал. Ладно, тут наверное можно и поверить, уж это AVR наверное может.

 

может быть применен какой-н сплайн к спектральным составляющим fft

 

Спасибо, попробую погуглить в этом направлении. Но опять же смущает заявленная у них точность 0.013%. Я думал что любая апроксимация может увеличиить только разрешающую смособность, но не гарантировать точность. А у них получается что точность на уровне 1/7700, то есть почти в 4 раза выше чем если за точность брать расположение палок исходного FFT.

Но тут наверное хитрость в том что точно известна форма искомой функции- чистый синус и это может сыграть.

Я вот еще подумал, если после FFT я знаю узкий диапазон и делаю цифровую фильтрацию, отсекая все выше и ниже, может это помочь при дальнейшей обработке? но вот непонятно что за бработка такая....

Спасибо за подсказку, завтра про сплайны почитаю.

 

А насчет нейронных сетей- не та это техника. Это полевой прибор, не для лабораторий. Думаю все сделано по максимуму дубово и без новомодностей. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тут, действительно, фишка в том, что сигнал - чистый синус. Здесь нет спектрального разрешения 0.001Гц в смысле, что две линии на таком расстоянии друг от друга отличить будет невозможно. Имеется в виду, что младшая значащая цифра прибора 0.001Гц. Мы сделали прибор для измерения синуса в сети, так там разрешение и точность еще выше. Использовано понятно что. На входной сигнал накладывается оконная функция. Что они использовали - не знаю, а у нас - Гаусс. Далее, форма линии в спектре будет совпадать с формой оконной функции. Подгоняем коэффициенты так, чтобы функция наилучшим образом легла на результат Фурье-преобразования. Из коэффициентов считаем точную величину частоты. Получается очень хорошо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как это может быть сделано? Взяли FFT, определили частоту грубо, потом детально обнюхали область вокруг найденной частоты, получили частоту точно?

Именно так..

 

1. Взяли FFT4096 от 0 Hz до 16384 Hz и нашли fmin и fmax,

причем, ∆f = fmax - fmin = 16384 Hz / 4096 = 4 Hz;

2. Умножили входной сигнал fs на комплексную экспоненту с частотой -fmin.

3. Отфильтровали сигнал в полосе 0 Hz до 4 Hz.

4. Сделали децимацию в 4096 раз.

5. Добавли четыре полученных семпла в буфер FIFO на 4096 точек. Четыре первых семпла из буфера FIFO удаляем.

6. Взяли FFT4096 от 0 Hz до 4 Hz и нашли fs = fmin+fbin,

причем, ∆fs = 4 Hz / 4096 = 0.0009765625 Hz;

Изменено пользователем blackfin

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, попробую погуглить в этом направлении. Но опять же смущает заявленная у них точность 0.013%. Я думал что любая апроксимация может увеличиить только разрешающую смособность, но не гарантировать точность. А у них получается что точность на уровне 1/7700, то есть почти в 4 раза выше чем если за точность брать расположение палок исходного FFT.

Но тут наверное хитрость в том что точно известна форма искомой функции- чистый синус и это может сыграть.

ага, сплайн или любая интерполяция повысит только разрешение, но ведь жентельменов нельзя проверить..

если действительно знать, что форма сигнала - синус, то можно поставить PLL и получить требуемое разрешение, уточняя выделенный спектральный максимум постоянным набегом ошибки. Ну это я бы так сделал, как они сделали - трудно догадаться.

 

p.s. про нейронные сети шутка такая, их вставляют куда не попадя в рекламу, как бананотехнологии

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

если вы хотите получить точность 0.001 Гц при использовании fft при неизвестном сигнале, то вы должны наблюдать сигнал 1000 сек. Поэтому по-любому используют дополнительную информацию для повышения точности. Я так понимаю, что исследуется колебание струны , а значит форма сигнала известна (затухающая синусоида), неизвестны лишь несколько параметров, частота, нач фаза, коэффициент затухания или что-то в этом роде. Остается произвести анализ параметров вашего сигнала. Для этого есть куча вариантов, например методом наименьших квадратов путем оптимизации подобрать эти параметры. Если нужна только частота, то можно амплитуду ограничить и ставить PLL, нейронные сети предлагали, в общем поле для фантазии.

 

3. Взяли FFT4096 от 0 Hz до 4 Hz и нашли fs = fmin+fbin,

причем, ∆fs = 4 Hz / 4096 = 0.0009765625 Hz;

Я и говорю надо ждать 1000 сек не думаю что это возможно. Ибо сигнал затухает и нет голой синусоиды а есть некий горбик.

 

И еще должен сказать: Интерполяция не улучшает разрешения спектрального анализа при FFT, но позволяет произвести уточнение частоты вблизи спектрального пика (например по трем наивысшим точкам построить параболу и принять ее максимум за уточненную частоту).

Изменено пользователем bahurin

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Именно так..

 

1. Взяли FFT4096 от 0 Hz до 16384 Hz и нашли fmin и fmax,

причем, ∆f = fmax - fmin = 16384 Hz / 4096 = 4 Hz;

2. Умножили входной сигнал fs на комплексную экспоненту с частотой -fmin.

3. Отфильтровали сигнал в полосе 0 Hz до 4 Hz.

4. Сделали децимацию в 4096 раз.

5. Добавли четыре полученных семпла в буфер FIFO на 4096 точек. Четыре первых семпла из буфера FIFO удаляем.

6. Взяли FFT4096 от 0 Hz до 4 Hz и нашли fs = fmin+fbin,

причем, ∆fs = 4 Hz / 4096 = 0.0009765625 Hz;

 

Благодарствую!

у меня путем несложных калькуляторных вычислений на уровне интуиции изначально крутилось что-то валенковское типа "два раза применили FFT4096 к входному реалу, уж больно в цифры хорошо попадает". Но интуиция на пустом месте дело бесполезное.... буду копать в указанном направлении. Хотя какое тут направление, готовый алгоритм, сразу кодировать можно :)

 

 

2 All:

 

Благодарю всех за дельные советы! Вы мне показали что такое возможно и дали даже больше одного варианта как это сделать.

 

В-общем сказал начальству что умные люди сказали что оно не бред и реально, по крайней мере есть методы :)

Для проверки даже заложим в прототип (в котором по-старинке считать собирался) какую-никакую вычислительную мощность в виде dsPIC и на всякий случай внешнего RAM (хотя надеюсь внутренних 16К хватит) и вперед. Ну и дополнительные три недели только на проверку и реализацию этого алгоритм затребовал :)

 

Разумеется сначала попробую на компьютере прогнать снятый с АЦП сигнал (такие частоты и саундбластер возьмет), потом уже в железо перекину.

 

Еще раз спасибо!

 

Уверен что появятся новые вопросы- так я ж молчать не буду.... Но это уже после пьянки празников. У нас тут обычно и католическое Рождество мимо не проходит, чувствуется близость запада.....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это переходы через ноль считать (zero-crossing counting method)?

Нет, не переходы. Считается целое число периодов входной частоты. Заполнение - 20 МГц, отсюда легко вычисляется погрешность.

 

А про точность 0.001 методом захвата- это вы я так думаю погорячились. Ну во-первых нужно переименовать "точность" в "разрешение" (ну или говорить о стабильности 0.15ppm, что за АВР такой?), а во-вторых при 6.5 кГц это будет 23 пикосекунды разница в длительности периода. 44 наносекунды за 1950 периодов (300мс и 6500Гц). это 22 МГц тактирование таймера чтобы один такт набежал. Ладно, тут наверное можно и поверить, уж это AVR наверное может

1) Не пойму, причём здесь стабильность 0.15ppm и АВР? Подайте на АВР стабильный клок, всех делов. Если есть нестабильность опоры, значит, как по теории, складывайте погрешность метода и погрешность опоры, другого не дано.

 

2) Отчасти вы правы, 0.001 Гц для метода захвата в вашем случае это не точность и не разрешение, это погрешность измерения (максимальная ошибка), т.е. ошибка результата измерения будет не хуже. (Не хотел говорить, а то вы спать не будете, но всё-таки скажу: на таком интервале я могу легко получить погрешность 0.0001 Гц).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

(Не хотел говорить, а то вы спать не будете, но всё-таки скажу: я могу легко получить погрешность на таком интервале 0.0001 Гц).

 

Не, теперь уже спать буду. много вариантов уже предложено, ну хоть один-то сработает :)

Если нет- то конечно вернемся в прошлый век, периоды считать.

Я сам против использования тяжелой артиллерии при отстреливании мелких пернатых, но тут мне кажется ЦОС на своем месте будет, да и некоторые дополнительные вкусности дает в виде измерения амплтитуды и отношения сигнал/шум. Это может предсказать отказ до выхода из строя (датчики часто вмурованы в стены во время строительства или болтаются на дне морском или еще где в глубоких скважинах и если их замена может прогнозироваться и осуществляться планово а не аварийно- это прямо праздник!). Лично я хочу применить ЦОС, но не знаю как (но теперь уже имею конкретные пути для раскопок ;).

 

 

О! точно все-таки юзают они FFT! они там еще в этом приборе и амплитудное значение и SNR считают! и все это на базе одной выборки за время одного измерения (каждые 2 секунды новое значение считают, а вроде бы чаще возбуждать струну не рекомендуется).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

два раза fft нельзя для коротких сигналов, fft - дает усредненные значение на интервале. Получите усреднение на 1024 секундах, че там вылезет не угадать

fft + wavelet,

fft + pll

или валенком - fft + уточненный максимум по соседним спектр.компонентам

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Точность измерения частота одиночной синусоиды за любое время больше периода ограничена только отношением сигнал/шум (согласно оценки максимального правдоподобия Крамера_Рао) и собственно стабильностью самой частоты. Предельная точность реально достигается с помощью интерполяции спектра. Такшта нивапрос))

Тут, действительно, фишка в том, что сигнал - чистый синус. Здесь нет спектрального разрешения 0.001Гц в смысле, что две линии на таком расстоянии друг от друга отличить будет невозможно. Имеется в виду, что младшая значащая цифра прибора 0.001Гц. Мы сделали прибор для измерения синуса в сети, так там разрешение и точность еще выше. Использовано понятно что. На входной сигнал накладывается оконная функция.

кстати если существует гарантия, что гармонические помехи отсутствуют (гарантировано одна спектральная линия на фоне шума) окно применять не нужно, окно нужно чтобы изолировать спектральную линию от влияния помех, в акустике - от гармоник

Что они использовали - не знаю, а у нас - Гаусс. Далее, форма линии в спектре будет совпадать с формой оконной функции (очевидно с её преобразованием Фурье, если быть точным). Подгоняем коэффициенты так, чтобы функция наилучшим образом легла на результат Фурье-преобразования. Из коэффициентов считаем точную величину частоты. Получается очень хорошо.

ТАК!

 

Здесь исчерпывающий отчет по теме музицирующих программистов из Стэнфордского университета. В форуме обсуждалось неоднократно

https://ccrma.stanford.edu/STANM/stanm/node3.html

Stanford University Department of Music (STAN-M)

Technical Reports On-Line:

Abe, M., and J. O. Smith. 2004c.

Design Criteria for the Quadratically Interpolated FFT Method (I): Bias due to Interpolation.

Tech. rept. STAN-M-114. Stanford University, Department of Music.

Abe, M., and J. O. Smith. 2004d.

Design Criteria for the Quadratically Interpolated FFT Method (II): Bias due to Interfering Components.

Tech. rept. STAN-M-115. Stanford University, Department of Music.

Abe, M., and J. O. Smith. 2004e.

Design Criteria for the Quadratically Interpolated FFT Method (III): Bias due to Amplitude and Frequency Modulation.

Tech. rept. STAN-M-116. Stanford University, Department of Music.

Abe, M., and J. O. Smith. 2004a.

AM/FM Rate Estimation and Bias Correction for Time-Varying Sinusoidal Modeling.

Tech. rept. STAN-M-118. Stanford University, Department of Music.

Abe, M., and J. O. Smith. 2004b.

CQIFFT: Correcting Bias in a Sinusoidal Parameter Estimator based on Quadratic Interpolation of FFT Magnitude Peaks.

Tech. rept. STAN-M-117. Stanford University, Department of Music.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

два раза fft нельзя для коротких сигналов, fft - дает усредненные значение на интервале. Получите усреднение на 1024 секундах, че там вылезет не угадать

fft + wavelet,

fft + pll

или валенком - fft + уточненный максимум по соседним спектр.компонентам

 

нету у меня много секунд, у меня сигнал затухающий. Я так понял что blackfin имел в виду обработку однажды ссобранных данных, два fft но второе применяется к той же изначальной выборке но уже обработанной. То есть на все-про все я имею одну исходную выборку из которой все и решаю.

 

Да, наверное для красоты и ясности нужно было картинку сигнала прямо тут привести. Это после того как струну дернули она так вибрирует. Сколько миллисекунд используется для выборки не знаю но получается что-то никак не дольше 300ms, даже может 200. Это хорошо ложится на 4096 точек и обычный средний 24-битный АЦП

Изготовители написали, что это сигнал снятый с "Good Sensor with a Wider Range (200 to 6500 Hz)". Это из того документа, на который я ссылался в самом первом письме.

 

post-15025-1293007242_thumb.jpg

 

Точность измерения частота одиночной синусоиды за любое время больше периода ограничена только отношением сигнал/шум (согласно оценки максимального правдоподобия Крамера_Рао) и собственно стабильностью самой частоты. Предельная точность реально достигается с помощью интерполяции спектра. Такшта нивапрос))

ТАК!

 

Здесь исчерпывающий отчет по теме музицирующих программистов из Стэнфордского университета. В форуме обсуждалось неоднократно

https://ccrma.stanford.edu/STANM/stanm/node3.html

 

Спасибо! не пройду мимо! На подобное и надеюсь, что вопрос не нов и где-то уже все есть...... Но уж никак не думал, что "Department of Music" интересуется подобными точностями, даже если в универе. наверное математикам в общаге спать мешали :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

:bb-offtopic:

Спасибо! не пройду мимо! На подобное и надеюсь, что вопрос не нов и где-то уже все есть...... Но уж никак не думал, что "Department of Music" интересуется подобными точностями, даже если в универе. наверное математикам в общаге спать мешали :)

 

Не новый. Всё придумано до нас и даже до этих американцев и прочих немцев из соседней темы.

Я, например, использовал квадратичную интерполяцию (для определения частоты несущей модема) за 5 лет, до этой публикации музыкальных американцев.

И тогда это уже было не ново. Теория была разработана в 80-х годах. Rife&Burstin были первопроходимцами в этом вопросе ещё в 1974-м году

Пионерская статья Rife&Burstin

Но в отчетах по ссылке очень много полезных практических экспериментальных деталей. Судя по отчетам там на факультете хорошие музыкальные теоретики теормуза

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...