|
|
  |
Быстрое преобразование Фурье не для степени 2, как довести число отсчетов до стпени двойки |
|
|
|
Oct 18 2011, 11:01
|
Частый гость
 
Группа: Участник
Сообщений: 161
Регистрация: 22-06-09
Из: Москва
Пользователь №: 50 531

|
Цитата(GetSmart @ Oct 18 2011, 14:58)  Никогда о нём не слышал. Будем почитать. http://www.padabum.com/d.php?id=3411стр. 365.
Сообщение отредактировал SPACUM - Oct 18 2011, 11:05
--------------------
Ты можешь знать все что угодно, но пока ты не доказал это на практике, ты не знаешь ничего!© Ричард Бах
|
|
|
|
|
Oct 18 2011, 11:57
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(_Anatoliy @ Oct 18 2011, 16:49)  А интерполировать по трём бинам не пробовали?Я когда-то игрался с этим,получались неплохие результаты но дальше модели не пошло. Над этим я думал. Но штука в том, что шума много допускается. Без шума мне точность вытягивать не надо. А с шумом (грубо 0 дб С/Ш) мне нужна предельная точность. Да и результат точнее не будет, скорее наоборот. Т.к., если это делать по БПФ, то сразу вылезут грабли БПФ-а - несоответствие (а точнее занижение) амплитуды дробных частот. Что сразу может сделать пик на спектре принадлежащим шуму, а не моему сигналу. То есть, по трём точкам, значит одна из них - это пик на спектре БПФ. Но пик недостоверный. Если брать несколько пиков, то опять неясно какой в реале выше, т.к. они все недостоверные.
Сообщение отредактировал GetSmart - Oct 18 2011, 12:06
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Oct 18 2011, 14:48
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(Alexey Lukin @ Oct 18 2011, 15:00)  Если надо определять коэффициенты с "дробными частотами" (между бинами), то дополняйте сигнал нулями и берите обычное ДПФ. Правильно ли я понимаю, что если мне надо найти все дробные бины с разрешением 1/8, то я должен к основному блоку данных (32 точки) добавить ещё 7 раз по 32 точки нулей и сделать БПФ по 256 точкам? Или там другой алгоритм добавления? Сейчас пока моделирую, проверяю достоверность амплитуд пиков этого метода. Хоть результат спектра далёк от идеала, но в моём случае, когда априорно известно, что сигнал - простой синус, может быть этот метод и сработает. Хотя БПФ по в 8 раз большему блоку сам по себе накладен и возможно будет медленнее БПФ @ 32N + X раз ДПФ.
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Oct 18 2011, 14:59
|
Частый гость
 
Группа: Участник
Сообщений: 161
Регистрация: 22-06-09
Из: Москва
Пользователь №: 50 531

|
Цитата(GetSmart @ Oct 18 2011, 15:21)  Какой-то он избыточный. Ну на 30 точек получаем 10 амплитуд-частот-фаз и восстановленный сигнал проходит через все точки с любой точностью. Избыточность меньше, чем у БПФ(сигнал представлен меньшим числом гармоник). Если нужно 4 частоты - возьмите 12 точек. Вот с шумами дело темное. Тут Крамер-Рао не работает. Закон такой: Если сигнал состоит точно из N частот, то для их определения достаточно 3 * N точек выборки не обязательно через равные промежутки времени. А математика тут противная и требует повышенной точности вычислений и, наверное, усреднения по нескольким выборкам. При моем числе точек и для микропроцессора даже не пытался. Поставленная Вами задача - нужная и интересная и я ей тоже занимаюсь(в свободное от работы время и медленно). Пока действительно слишком долго считает.
--------------------
Ты можешь знать все что угодно, но пока ты не доказал это на практике, ты не знаешь ничего!© Ричард Бах
|
|
|
|
|
Oct 18 2011, 15:41
|

Частый гость
 
Группа: Участник
Сообщений: 159
Регистрация: 3-01-11
Пользователь №: 62 000

|
Цитата(GetSmart @ Oct 18 2011, 18:48)  Правильно ли я понимаю, что если мне надо найти все дробные бины с разрешением 1/8, то я должен к основному блоку данных (32 точки) добавить ещё 7 раз по 32 точки нулей и сделать БПФ по 256 точкам? Совершенно верно. Перед дополнением нулей сигнал можно умножить на весовое окно. Если шума очень много — то прямоугольное (оно оптимально для детектирования сигнала), если поменьше — то Ханна или другое аналогичное (они улучшают аккуратность оценки частоты при интерполяции по 3 точкам). Далее интерполирете частоту по трём максимальным точкам в спектре. Спектр перед этим лучше перевести в логарифмический масштаб амплитуд. Если нужна более высокая точность — обратитесь к параметрическим методам. Задача нахождения частоты синусоиды в шуме кем только не решалась, вот даже вот в соседнем топике...
|
|
|
|
|
Oct 18 2011, 16:34
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(Alexey Lukin @ Oct 18 2011, 20:41)  Задача нахождения частоты синусоиды в шуме кем только не решалась, вот даже вот в соседнем топике... У меня задача не совсем такая. Мне её сначала нужно "выявить" на фоне большого шума. Просто по БПФ её часто не видно. Это главная часть задачи. И точек мало. Я уже посмотрел на результаты 8-кратного дополнения нулей. Вобщем неплохо. Хотя странно, что амплитуды немного (или заметно) неточны. Часто даже в большую сторону. И это без шума вообще. Но мне это некритично. Цитата(Alexey Lukin @ Oct 18 2011, 20:41)  Спектр перед этим лучше перевести в логарифмический масштаб амплитуд. Зачем? Upd. Вобщем, проверил. БПФ от дополненного нулями блока сэмплов даёт результат лучше обычного БПФ для определения сразу же максимума на спектре и более точной (чем БПФ) частоты этого максимума. И это при больших шумах. Только подозреваю, что смысла в очень большом дополнении нулями нет. Этот же результат можно высчитать другим методом (тремя точками?). А во сколько раз дополнять нулями оптимально, надо бы разобраться. 2, 4 или 8.
Сообщение отредактировал GetSmart - Oct 18 2011, 18:06
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Oct 18 2011, 18:41
|
Частый гость
 
Группа: Участник
Сообщений: 161
Регистрация: 22-06-09
Из: Москва
Пользователь №: 50 531

|
Цитата(GetSmart @ Oct 18 2011, 20:34)  У меня задача не совсем такая. Мне её сначала нужно "выявить" на фоне большого шума. Просто по БПФ её часто не видно. Это главная часть задачи. И точек мало. Я уже посмотрел на результаты 8-кратного дополнения нулей. Вобщем неплохо. Хотя странно, что амплитуды немного (или заметно) неточны. Часто даже в большую сторону. И это без шума вообще. Но мне это некритично.
Зачем? 1.При SNR = 1 видно хорошо, значит Ваш сигнал меньше? 2.БПФ - практически идеальный обнаружитель синусоидального сигнала и если его не видно, значит число точек мало и ничего не поможет. 3.Рекомендуемые здесь методы основаны на том, что пик однозначно виден и ближайшие бины не скачут. 4.Вершина пика при окне Ханна мало похожа на параболу, а логарифмирование слегка приближает форму пика к ней. Я бы выбрал окно с более гладкой вершиной Наттала, Гаусса, Флаттоп и без логарифмирования. 5.А фильтр перед АЦП нельзя сделать лучше? Насколько входная частота меняется?
--------------------
Ты можешь знать все что угодно, но пока ты не доказал это на практике, ты не знаешь ничего!© Ричард Бах
|
|
|
|
|
Oct 18 2011, 19:02
|

Частый гость
 
Группа: Участник
Сообщений: 159
Регистрация: 3-01-11
Пользователь №: 62 000

|
Цитата(GetSmart @ Oct 18 2011, 20:34)  Только подозреваю, что смысла в очень большом дополнении нулями нет. Этот же результат можно высчитать другим методом (тремя точками?). А во сколько раз дополнять нулями оптимально, надо бы разобраться. 2, 4 или 8. Дополнение сигнала нулями эквивалентно sinc-интерполяции спектра. Раза в 2–4 эта интерполяция может выглядеть неочевидно, а потом уже можно похожих результатов добиться полиномиальной интерполяцией. Цитата(SPACUM @ Oct 18 2011, 22:41)  4.Вершина пика при окне Ханна мало похожа на параболу, а логарифмирование слегка приближает форму пика к ней. Я бы выбрал окно с более гладкой вершиной Наттала, Гаусса, Флаттоп и без логарифмирования. Вот уж как раз flat-top окно на параболу совсем непохоже. Да и способность детектировать сигнал в шуме у этих окон слабая — они слишком узкие во временной области. Цитата(GetSmart @ Oct 18 2011, 20:34)  Зачем? Так точнее получаются оценки частоты с помощью параболической интерполяции. Если не брать логарифма, то оценки будут смещены в сторону ближайшего бина ДПФ.
|
|
|
|
|
Oct 18 2011, 19:24
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(SPACUM @ Oct 18 2011, 23:41)  ... 1. Re[i] := cos(p * i) + (Random-0.5)*3.0; 2. Это не так. Точнее не всегда так. Возьмите 32 точки, частоту например в 10.5 раз выше 1/Т. БПФ будет показывать недостоверную частоту и амплитуду максимума (хоть с шумом, хоть без). Далее сравните много раз картинки чистого БПФ и дополненного нулями в 8 раз. Даже по картикам виден лучший результат. 5. Зачём? Нет наложения спектров. ---------- Маленький вопрос не совсем по теме. ДПФ/БПФ увеличивает С/Ш в 2 раза или в 1.41 при увеличении периода (длины [кол-ва точек] синуса) в 2 раза на фоне белого шума? Цитата(Alexey Lukin @ Oct 19 2011, 00:02)  Дополнение сигнала нулями эквивалентно sinc-интерполяции спектра. Раза в 2–4 эта интерполяция может выглядеть неочевидно, а потом уже можно похожих результатов добиться полиномиальной интерполяцией. Это хорошо. Если бы мне нужна была одна точка и я знал где её искать, интерполировал бы только её и сэкономил время. Но чтобы найти все возможные видимо проще будет делать большой БПФ. Upd. Как раз, в продолжении этого алгоритма мне понадобится знать только 4 точки из всего спектра. Их-то и можно будет интерполировать после короткого БПФ. Причём с любой дробной частью частоты.
Сообщение отредактировал GetSmart - Oct 18 2011, 20:39
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Oct 18 2011, 20:12
|

Частый гость
 
Группа: Участник
Сообщений: 159
Регистрация: 3-01-11
Пользователь №: 62 000

|
Цитата(GetSmart @ Oct 18 2011, 23:24)  ДПФ/БПФ увеличивает С/Ш в 2 раза или в 1.41 при увеличении периода (длины [кол-ва точек] синуса) в 2 раза на фоне белого шума? С/Ш в каждом бине ДПФ улучшается на 3 дБ, т.к. мощность шума распределяется на 2 бина, а мощность синуса не изменяется.
|
|
|
|
|
Oct 19 2011, 06:06
|
Частый гость
 
Группа: Участник
Сообщений: 161
Регистрация: 22-06-09
Из: Москва
Пользователь №: 50 531

|
Цитата(GetSmart @ Oct 18 2011, 23:24)  5. Зачём? Нет наложения спектров.
---------- В смысле шума на входе. БПФ не идеальный фильтр, а шума очень много. Хотя если частота может меняться в несколько раз, смысла нет.
Сообщение отредактировал SPACUM - Oct 19 2011, 06:29
--------------------
Ты можешь знать все что угодно, но пока ты не доказал это на практике, ты не знаешь ничего!© Ричард Бах
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|