|
Спектральный анализ на сверхнизких частотах |
|
|
|
Jul 2 2007, 09:03
|
Участник

Группа: Участник
Сообщений: 42
Регистрация: 16-05-07
Пользователь №: 27 771

|
Цитата(Crowbar @ Jul 2 2007, 12:21)  Допустим, требуется получить разложение спектра частот до 20Гц с точностью 0,01Гц и выше. Каким образом это реализуется, помимо самого простого способа, как поставить частоту отцифровки на 40Гц, выставить кол-во сэмплов на 4000 и ждать больше полутора минут завершения очередного цикла? Не обязательно. Просто набираете некоторое количество отсчетов (например 80 - 2 секунды записи). Затем производите БПФ требуемой размерности (например, 4096 - точность как раз около 0.01Гц). Недостающие до 4096 отсчеты (4016) заполняете нулями. И выполняете БПФ.
|
|
|
|
|
Jul 2 2007, 09:22
|
Местный
  
Группа: Участник
Сообщений: 450
Регистрация: 21-12-06
Пользователь №: 23 757

|
Цитата(mikalaha @ Jul 2 2007, 13:03)  Не обязательно. Просто набираете некоторое количество отсчетов (например 80 - 2 секунды записи). Затем производите БПФ требуемой размерности (например, 4096 - точность как раз около 0.01Гц). Недостающие до 4096 отсчеты (4016) заполняете нулями. И выполняете БПФ. То есть Вы хотите получить информацию о процессе периодом 100сек за 2секунды?  Увы... To Crowbar: Да, именно так как Вы сказали
|
|
|
|
|
Jul 2 2007, 10:24
|
Участник

Группа: Участник
Сообщений: 42
Регистрация: 16-05-07
Пользователь №: 27 771

|
Цитата(Alex255 @ Jul 2 2007, 13:22)  То есть Вы хотите получить информацию о процессе периодом 100сек за 2секунды?  Увы... To Crowbar: Да, именно так как Вы сказали  На самом деле все отлично работает. Например: сигнал - тон с частотой 10 Гц (период 0.1 сек) - в одной секунде 10 периодов!! при записи с дискретизацией 40 Гц одной секунды получаем 40 отсчетов, в которых содержится целых 10 периодов тона. Если теперь дополнить нулями и взять FFT мы получим этот тон. Прикреплены картинки time - сигнал во временной области; freq - после FFT 4096 freq2 - увеличенная частотная позиция 10 Гц после FFT (что и требовалось) Цитата(mikalaha @ Jul 2 2007, 14:14)  На самом деле все отлично работает. Например: сигнал - тон с частотой 10 Гц (период 0.1 сек) - в одной секунде 10 периодов!! при записи с дискретизацией 40 Гц одной секунды получаем 40 отсчетов, в которых содержится целых 10 периодов тона. Если теперь дополнить нулями и взять FFT мы получим этот тон.
Прикреплены картинки time - сигнал во временной области; freq - после FFT 4096 freq2 - увеличенная частотная позиция 10 Гц после FFT (что и требовалось) То же самое наблюдается и при тоне с частотой например (10.05 Гц). Единственное различие вышло следующее: без прореживания нулями пик после Фурье вышел на частоте 10.0488 Гц, а с прореживанием - 10.0399 Гц
Эскизы прикрепленных изображений
|
|
|
|
|
Jul 2 2007, 11:39
|

инженер
   
Группа: Свой
Сообщений: 717
Регистрация: 4-03-05
Пользователь №: 3 064

|
2 Crowbar возмите - в инете есть книжка Марпла С.Л. Марпл-младший. Цифровой спектральный анализ и его приложения. (гл. 1-7) С.Л. Марпл-младший. Цифровой спектральный анализ и его приложения. (гл. 8-16) http://dsp-book.narod.ru/books.htmlтам есть глава Аналитические методы спектрального анализа да и вообще - много полезного по Вашему вопросу....
--------------------
........поужинали вяленой рыбой, кот лежал рядом, молчали.......
|
|
|
|
|
Jul 3 2007, 04:56
|
Участник

Группа: Участник
Сообщений: 42
Регистрация: 16-05-07
Пользователь №: 27 771

|
Цитата(fontp @ Jul 2 2007, 15:29)  Дополнение нулями работает, но только для одиночного тона. На самом деле вы получаете грубую сетку частот для оценки по БПФ, а более тонкие частоты получили интерполяцией (дополнение нулями означает некоторую интерполяцию промежуточных точек БПФ). Для оценки произвольного спектра это работать, очевидно, не будет. Попробуйте, например, разрешить два тона, отстоящих друг от друга на 0.01 гц - 10гц и 10.01 гц. Разрешить означает, что они присутствуют в спектре одновременно. Неуспех гарантирован принципом неопределённости Согласен, погорячился. Надо подумать об обучении
|
|
|
|
|
Jun 24 2009, 09:18
|

Местный
  
Группа: Свой
Сообщений: 268
Регистрация: 4-11-05
Пользователь №: 10 470

|
Занимаюсь получением спектра по модифицированному ковариационному алгоритму, описанному в книге Марпла мл., на которую тут ссылались. Написал прогу. Вернее списал с книжки, перевел с тамошнего фортрана на экселевский бейсик (ну надо оно мне там!!). Но она считает неправильно. В конце той книги должна быть тест-последовательность, по которой можно отладить все процедурки, приведенные в книге. Но в моем дэжавюшнике книга обрывается на стр 547, где еще идет окончание 16-й главы... Откуда я только не качал эту книженцию - везде лежит одно и тоже. Иногда по половинкам иногда целая, но косяки все теже. У кого есть ПРИЛОЖЕНИЕ II с 64-точечной комплексной тест-последовательностью марпла - помогите пожалуйста! Можно прямо тут положить.  ==================================== А все. Сам нашел. )))) Там-же есть постраничная выкладка этой книги. Там все от начала и до конца и в хорошем качестве. Только чтоб показывало - надо скачать 0584.djbz обязательно. и можно по страничкам смотреть.
|
|
|
|
|
Apr 29 2013, 11:19
|
Группа: Новичок
Сообщений: 4
Регистрация: 29-04-13
Пользователь №: 76 672

|
Цитата(Waso @ Jun 24 2009, 13:18)  Занимаюсь получением спектра по модифицированному ковариационному алгоритму, описанному в книге Марпла мл., на которую тут ссылались. Написал прогу. Вернее списал с книжки, перевел с тамошнего фортрана на экселевский бейсик (ну надо оно мне там!!). Но она считает неправильно. В конце той книги должна быть тест-последовательность, по которой можно отладить все процедурки, приведенные в книге. Но в моем дэжавюшнике книга обрывается на стр 547, где еще идет окончание 16-й главы... Откуда я только не качал эту книженцию - везде лежит одно и тоже. Иногда по половинкам иногда целая, но косяки все теже. У кого есть ПРИЛОЖЕНИЕ II с 64-точечной комплексной тест-последовательностью марпла - помогите пожалуйста! Можно прямо тут положить.  ==================================== А все. Сам нашел. )))) Там-же есть постраничная выкладка этой книги. Там все от начала и до конца и в хорошем качестве. Только чтоб показывало - надо скачать 0584.djbz обязательно. и можно по страничкам смотреть. У меня та же самая проблема -- не подскажите, как решили? До того реализовывал метод Берга -- рекурсивное нахождение дисперсии белого шума (rho) давало неправильные результаты. После того, как рекурсию заменил на "грубую силу", начал получать правильный спектр. Может, здесь тоже с этим проблема? Или я где-то с коэффициентами напутал?
|
|
|
|
|
Apr 29 2013, 12:28
|

Эксперт
    
Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183

|
QUOTE (ne_ya @ Apr 29 2013, 15:19)  У меня та же самая проблема -- не подскажите, как решили? До того реализовывал метод Берга -- рекурсивное нахождение дисперсии белого шума (rho) давало неправильные результаты. После того, как рекурсию заменил на "грубую силу", начал получать правильный спектр. Может, здесь тоже с этим проблема? Или я где-то с коэффициентами напутал? Наверно напутали. У Марпла блочные методы работающие. Проверяйте на его тестовых данных. Оценки дисперсии генерирующего шума могут быть смещенными, но оценки спектра получаются хорошими (хотя тоже немного смещенными). Поэтому метод Берга работает хуже обычного Левинсона в отношении определения частоты пиков, например. Берг за то лучше предсказывает. Но это уже вопросы адекватности моделей, а не работоспособности алгоритма Если данных мало,среди блочных методов ковариационные методы лучше всего. Скользящая же рекурсия (алгоритм Fast RLS) работает условно - то есть он сходится до определенного предела, после чего обязательно разваливается, поскольку вблизи точного решения обычно алгоритм становится сингулярным, выходит на границу устойчивости. Самый простой способ, используемый для борьбы с этим - это периодическая реинициализация, там сказано. Кроме того существуют более устойчивые варианты FRLS, чем классический, приведенный у Марпла (как адапитивная Калмановская AR-модель) типа этого FRLS, устойчивого в большинстве случаев http://www.wcl.ece.upatras.gr/CSNDSP//cont...0Audio/A8.1.pdf
|
|
|
|
|
May 28 2013, 05:11
|
Группа: Новичок
Сообщений: 4
Регистрация: 29-04-13
Пользователь №: 76 672

|
Цитата(fontp @ Apr 29 2013, 16:28)  Наверно напутали. У Марпла блочные методы работающие. Проверяйте на его тестовых данных. Оценки дисперсии генерирующего шума могут быть смещенными, но оценки спектра получаются хорошими (хотя тоже немного смещенными). Поэтому метод Берга работает хуже обычного Левинсона в отношении определения частоты пиков, например. Берг за то лучше предсказывает. Но это уже вопросы адекватности моделей, а не работоспособности алгоритма
Если данных мало,среди блочных методов ковариационные методы лучше всего. Спасибо за ответ. Что ковариционные методы на коротких отрезках данных дают лучшие оценки спектра, я читал. Поэтому мне и нужно реализовать модифицированных ковариционный. Проблема в том, что при переписывании приведенной программы один-в-один и прогонке по тестовому примеру, ответ получился не тот. Начал копаться в описании алгоритма -- нашел несоответствия с текстом программы. Обрадовался, переделал -- результат еще хуже. Вы реализовывали эти методы сами или просто знаете, что они работающие? Если реализовывали, то по описанному алгоритму или ориентировались на приложенную программу?
|
|
|
|
|
May 28 2013, 12:29
|

Эксперт
    
Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183

|
QUOTE (ne_ya @ May 28 2013, 08:11)  Спасибо за ответ.
Что ковариционные методы на коротких отрезках данных дают лучшие оценки спектра, я читал. Поэтому мне и нужно реализовать модифицированных ковариционный.
Проблема в том, что при переписывании приведенной программы один-в-один и прогонке по тестовому примеру, ответ получился не тот. Начал копаться в описании алгоритма -- нашел несоответствия с текстом программы. Обрадовался, переделал -- результат еще хуже. Вы реализовывали эти методы сами или просто знаете, что они работающие? Если реализовывали, то по описанному алгоритму или ориентировались на приложенную программу? Я когда-то реализовывал все блочные методы, но очень давно. Когда еще был ФОРТРАН. Деталей не помню. Там в тексте программ главное не путать I и 1, и не запутаться в индексах, если перекладывать на другой язык
|
|
|
|
|
May 28 2013, 17:55
|
Гуру
     
Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954

|
возник похожий вопрос, так что спрошу тут. есть N точек с достаточно неравномерной сеткой, сигнал - серия коротких импульсов, соответсвенно вокруг импульса сетка чаще, там где ничего нет между импульсами, околонулевой сигнал - сетка реже. интересует только одна конкретная частота, но с разной полосой.
1) если просто посчитать интеграл Фурье, какая получится полоса у полученного спектрального отсчёта? 2) как можно простым образом эту полосу контролирумо уменьшить?
подозреваю, что я могу, наверное, сделать интерполяцию, расставить равномерно отсчёты, потом пропустить это через какой-нибудь КИХ фильтр бешенной длины и опять посчитать тот же интеграл на нужной частоте, но хотелось бы проще.
|
|
|
|
|
May 30 2013, 09:05
|
Группа: Новичок
Сообщений: 4
Регистрация: 29-04-13
Пользователь №: 76 672

|
Цитата(fontp @ May 28 2013, 16:29)  Я когда-то реализовывал все блочные методы, но очень давно. Когда еще был ФОРТРАН. Деталей не помню. Там в тексте программ главное не путать I и 1, и не запутаться в индексах, если перекладывать на другой язык откомпелировал код на фортране, запустил -- ответ с предоставленным в книге не совпадает. Зато очень даже похож на то, что при переписывании на c# получалось. Так что все-таки вряд ли "все блочные методы у Марпла рабочие", к сожалению.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|