Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Увеличение разрешения по частоте
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Страницы: 1, 2, 3
EKirshin
Цитата(shf_05 @ Aug 1 2008, 11:07) *
так ли уж страшны скачки фазы- их гармоники никак не будут больше основного пика вашей частоты, увеличивая Nfft вы получите подробную картину происходящего в полосе сигнала пусть и с "паразитами" Вам ведь важно только положение максимума и не интересна др. полоса ведь так?

Нет, не так! Интересуют детали на частотах, близких к основной. Это нужно для исследования качества входной синусоиды.
fontp
Цитата(EKirshin @ Aug 1 2008, 13:44) *
Нет, не так! Интересуют детали на частотах, близких к основной. Это нужно для исследования качества входной синусоиды.


Ну если Вам нужны детали спектра вблизи основной частоты, то "Маклауд" Вам действительно не поможет. Кроме того, если у Вас нет привязки по времени начала блока, то и накоплять сигнал когерентно банком фильтров Вы бесспорно не сможете.

По моему мнению, остаётся делать БПФ (или ДПФ если область интереса мала) и потом накопляйте спектр мощности по блокам. Это классика. Разрешение определяется размером блока, а накопление подавляет шумы, но на разрешение не влияет.

Думаю, никто Вам ничем больше не поможет. Разве Станислав :-)
Stanislav
Цитата(blackfin @ Aug 1 2008, 12:56) *
А что Вам показалось здесь слишком сильным? Можете пояснить?
Потому, что в ряде случаев когерентная обработка всё-таки возможна. Свойство стационарности СП в этом сильно помогает, однако, нужно знать и другие условия.

Цитата(blackfin @ Aug 1 2008, 12:56) *
...Допустим, первый блок из 1000 импульсов с интервалом между импульсами 1сек начинается в 0 сек.
Потом - пауза, со случайной длительностью скажем, от 3.14159653589793 секунды до 4.14159653589793 секунды с равномерной плотностью вероятности на интервале 1 сек, и далее - второй блок из 1000 импульсов с интервалом между импульсами 1сек. Как можно получить выигрыш от корреляционной обработки обоих блоков?
Например, "сшить" их когерентно, а потом посчитать ДПФ выходной последовательности, получив удвоенное количество термов.
Только это не всегда возможно - повторюсь, для успешного решения должны удовлетворяться некоторые условия.
fontp
Цитата(Stanislav @ Aug 1 2008, 14:00) *
Потому, что в ряде случаев когерентная обработкавсё-таки возможна. Свойство стационарности СП в этом сильно помогает, однако, нужно знать и другие условия.

Например, "сшить" их когерентно, а потом посчитать ДПФ выходной последовательности, получив удвоенное количество термов.


Речь шла о том , что сшить Вы их не можете. Момент начала блока произволен и неизвестен с нужной точностью. Для того чтобы сшить нужна "фреймовая" синхронизация
Stanislav
Цитата(fontp @ Aug 1 2008, 12:56) *
Если расписать, как в результате "промежуточные" гармоники зависят от тех что были первоночально - выяснится, что это вариант интерполяции в промежуточных точках.
Это неверно.

Цитата(fontp @ Aug 1 2008, 12:56) *
...Вы забыли добавить "по моему мнению".
К чему добавить? Скромных познаний русского языка Вашего покорного слуги недостаточно, чтобы прикрутить это к моему высказыванию.
Цитата(fontp @ Aug 1 2008, 12:56) *
...Врочем, если даже добавить, Ваше заявление является полной ерундой.
Чушь.

Цитата(fontp @ Aug 1 2008, 12:56) *
...Расскажите, как Вы собираетесь когерентно накоплять цуги сигнала, фазы которых случайны и неизвестны...
Расскажу. Автору темы, после того, как он обнародует условия задачи.

Цитата(fontp @ Aug 1 2008, 12:56) *
Последний раз отвечаю для тугодумов:
Маклауд от ваших познаний тоже не в восторге: где здесь сказано хотя бы одно слово о разрешении. Даже не подразумевается. Явно говорится о точности измерения частоты.
Бред. Где говорится о точности измерения частоты, да ещё и "явно"?
Желаете пополнить список "экспонатов"?

Цитата(fontp @ Aug 1 2008, 13:51) *
Ну если Вам нужны детали спектра вблизи основной частоты, то "Маклауд" Вам действительно не поможет.
Видимо, начинает доходить, наконец... А ведь ясно было написано:
Цитата(EKirshin @ Jul 31 2008, 20:14) *
Имеется устройство (АЦП, ...), которое способно периодически (период не фиксирован) получать сигнал со входа - N точек. Частота дискретизации более 1 МГц. Задача следующая. Хочется "видеть", что происходит в районе частоты, поданной на вход устройства с большим разрешением по частоте...
, в аккурат перед Вашим постом...

Цитата(fontp @ Aug 1 2008, 13:51) *
...Кроме того, если у Вас нет привязки по времени начала блока, то и накоплять сигнал когерентно банком фильтров Вы бесспорно не сможете.
Очень даже спорно. biggrin.gif

Цитата(fontp @ Aug 1 2008, 13:51) *
...По моему мнению,............
Теперь правильно. biggrin.gif

Цитата(fontp @ Aug 1 2008, 14:03) *
Речь шла о том , что сшить Вы их не можете.
Речь шла о том, что Вы думаете, что сшить их невозможно. Или опять что-то не так?
Цитата(fontp @ Aug 1 2008, 14:03) *
...Момент начала блока произволен и неизвестен с нужной точностью.
Кто это сказал? Мне пока что об этом ничего не известно.

Цитата(fontp @ Aug 1 2008, 14:03) *
...Для того чтобы сшить нужна "фреймовая" синхронизация
Правильно. И я собираюсь её сделать, если позволят условия (см. вопросы выше). smile.gif
fontp
Цитата(Stanislav @ Aug 1 2008, 14:16) *
Правильно. И я собираюсь её сделать, если позволят условия (см. вопросы выше). smile.gif


Вот Вы уже торгуетесь.
Цитата(fontp @ Aug 1 2008, 11:07) *
Если период не фиксирован - нет точной временной привязки начала блока ...



Цитата(Stanislav @ Aug 1 2008, 14:16) *
Это неверно.


Это верно. Дать вам формулу функциональной зависимости спектра в "лишних" узлах, порождённых нулями, через ортогональные первоначальные компоненты? Или сами?
Stanislav
Цитата(fontp @ Aug 1 2008, 14:20) *
Вот Вы уже торгуетесь.
Послушайте, прекращайте флудить. Специально для Вас я могу придумать условия, при которых решение задачи возможно. Но об этом - в личку, поскольку тема создана не Вами, а уподобляться флудерам я не желаю...
fontp
Цитата(Stanislav @ Aug 1 2008, 14:24) *
Послушайте, прекращайте флудить. Специально для Вас я могу придумать условия, при которых решение задачи возможно. Но об этом - в личку, поскольку тема создана не Вами, а уподобляться флудерам я не желаю...


Не понял... Мне перестать флудить или отвечать? Это Вы требовали: "Отвечайте! В глаза смотреть!"

Мне и самому уже надоела эта тема. Оставляю Вас. В личку ни в коем случае.
Пыжьтесь сами выполнить свои пустые тяжеловесные обещания.
EKirshin
Цитата(Stanislav @ Aug 1 2008, 12:31) *
Понятно. Однако, это ещё не постановка задачи.
Видимо, вопросы придётся повторить.
1. Какова частота выборки сигнала?
2. Какова частота гармонического тона?
3. Каково отношение С/Ш? Каковы статистические свойства шума? Можно ли его в интересующей полосе считать белым?
4. Обладает ли шум свойством эргодичности?
5. Сохраняется ли когерентность выборки между кусками? Опишите харатктеристики кусков во временнОй области.
Очень хорошо бы выложить несколько реализаций СП.


Частота выборки сигнала переключается. К примеру, 1 МГц.
Частота грамонического сигнала может также изменяться, но она фиксирована в пределах одного эксперимента (получения спектра).
Соотношение сигнал/шум в районе 100db. Шум белый, эргодичностью обладает.

Не совсем понимаю, что имеется ввиду под "когерентностью". Если это совпадение фазы гармонического сигнала, то когерентность не сохраняется.
729
Цитата(EKirshin @ Aug 1 2008, 14:39) *
Частота выборки сигнала переключается. К примеру, 1 МГц.
Частота грамонического сигнала может также изменяться, но она фиксирована в пределах одного эксперимента (получения спектра).
Соотношение сигнал/шум в районе 100db. Шум белый, эргодичностью обладает.

Вот это условия!
А зачем "гармонику с неизменной частотой" в окрестностях рассматривать? У полезного сигнала есть какая-то полоса? Если есть, то какая?
GetSmart
Цитата(EKirshin @ Aug 1 2008, 16:39) *
Соотношение сигнал/шум в районе 100db.
Чем оцыфровывать будете 1 МГц ? Неужели шум квантования будет ниже этих 100db? Сколько для этого надо бит: 16, 17, 18 или больше?
729
Цитата(GetSmart @ Aug 1 2008, 15:17) *
Чем оцыфровывать будете 1 МГц ? Неужели шум квантования будет ниже этих 100db? Сколько для этого надо бит: 16, 17, 18 или больше?

Это примерно 16 эффективных разрядов АЦП. У меня рекорд был на сигма-дельта АЦП при Fs=48кГц - 15 эффективных.
Stanislav
Цитата(EKirshin @ Aug 1 2008, 14:39) *
Частота выборки сигнала переключается. К примеру, 1 МГц.
Частота грамонического сигнала может также изменяться, но она фиксирована в пределах одного эксперимента (получения спектра).
Если меняется, в каких пределах?
Известна ли она в каждом из экспериментов?
Какова при этом интересующая полоса сигнала?

Цитата(EKirshin @ Aug 1 2008, 14:39) *
...Соотношение сигнал/шум в районе 100db. Шум белый, эргодичностью обладает.
Ага, это уже хорошо. Похоже, должно получиться. smile.gif Но прошу ответить и на остальные вопросы (в частности, привести временнЫе характеристики процесса: длительность записи, длительность паузы).

ЗЫ.Генераторы, видимо, тестируете? wink.gif

Цитата(EKirshin @ Aug 1 2008, 14:39) *
...Не совсем понимаю, что имеется ввиду под "когерентностью". Если это совпадение фазы гармонического сигнала, то когерентность не сохраняется.
Под когерентностью подразумевается наличие информации об изменении фазы от конца одного "куска" до начала другого (сохранение фазовых соотношений выборки и сигнала от одного куска к другому).
Если когерентность выборки не сохраняется, будем получать её искусственно. wink.gif
Моя идея состоит в измерении фазы "главного" колебания (известной частоты) в каждом из кусков, с последующим их, кусков, "разворотом" на нужный угол. Дальше их можно склеивать вплотную, и анализировать, как Вам заблагорассудится - сигнал получится когерентным. smile.gif
Сейчас времени мало, но вечером попробую изобразить, как это я себе представляю (ещё додумать надо smile.gif ). До этого прошу уточнить условия, и, если можно, выложить реализации "кусков" процесса.

Цитата(GetSmart @ Aug 1 2008, 15:17) *
Чем оцыфровывать будете 1 МГц ? Неужели шум квантования будет ниже этих 100db? Сколько для этого надо бит: 16, 17, 18 или больше?
Цитата(729 @ Aug 1 2008, 15:24) *
Это примерно 16 эффективных разрядов АЦП. У меня рекорд был на сигма-дельта АЦП при Fs=48кГц - 15 эффективных.
Кто о чём, а вшивые - о бане. biggrin.gif
GetSmart
Цитата(Stanislav @ Aug 1 2008, 18:09) *
Кто о чём, а вшивые - о бане. biggrin.gif
ЗЗЫ.
АЦП 1
АЦП 2
АЦП 3
И т.д.... smile.gif
Stanislav, вас не справшивали. Не лезте в каждую дырку.

Опа! Ссылочки пропали lol.gif Прежде чем выставлять всякую ерунду напоказ надо было её хотя бы прочитать. Там как раз на максимуме производительности АЦП шумы в районе 100 дб.
Stanislav
Цитата(GetSmart @ Aug 1 2008, 17:19) *
Stanislav, вас не справшивали. Не лезте в каждую дырку.
Это Вас никто не спрашивал, равно как и Ваших "подопечных". 01.gif
А меня как раз спрашивали. wink.gif

Цитата(GetSmart @ Aug 1 2008, 17:19) *
...Опа! Ссылочки пропали lol.gif
Убрал, как не имеющие отношения к теме. А сыпать бисер перед свиньями не считаю нужным. wink.gif

Цитата(GetSmart @ Aug 1 2008, 17:19) *
...Прежде чем выслатвлять всякую ерунду напоказ надо было её хотя бы прочитать. Там как раз на максимуме производительности АЦП шумы в районе 100 дб.
07.gif
GetSmart, пощадите, христом-богом заклинаю... Ваша глупость доведёт меня когда-нибудь до цугундера. crying.gif
Автор темы что написал:
Цитата(EKirshin @ Aug 1 2008, 14:39) *
Частота выборки сигнала переключается. К примеру, 1 МГц.
....................................................
Соотношение сигнал/шум в районе 100db. Шум белый, эргодичностью обладает.
??? 01.gif

ЗЫ. Вот ещё "перл", только другого представителя:
Цитата(fontp @ Aug 1 2008, 12:56) *
Последний раз отвечаю для тугодумов:
Цитата(EKirshin @ Jul 31 2008, 20:14) *
Проясню, что требуется, т.к. задал вопрос действительно кошмарно...

Имеется устройство (АЦП, ...), которое способно периодически (период не фиксирован) получать сигнал со входа - N точек. Частота дискретизации более 1 МГц. Задача следующая. Хочется "видеть", что происходит в районе частоты, поданной на вход устройства с большим разрешением по частоте. Оставшаяся часть спектра нас не интересует (вернее, интересует, но уже в других целях).

Маклауд от ваших познаний тоже не в восторге: где здесь сказано хотя бы одно слово о разрешении. Даже не подразумевается...
"Неподразумевающееся" выделил. wink.gif

Вот мне интересно, какие вопросы можно обсуждать с такими "деятелями", и на каком языке надо с ними разговаривать вообще?
blackfin
Цитата(Stanislav @ Aug 1 2008, 16:09) *
Сейчас времени мало, но вечером попробую изобразить, как это я себе представляю (ещё додумать надо smile.gif ).
Мы ждем.. Уже вечер.. smile.gif
EKirshin
Цитата(GetSmart @ Aug 1 2008, 15:17) *
Чем оцыфровывать будете 1 МГц ? Неужели шум квантования будет ниже этих 100db? Сколько для этого надо бит: 16, 17, 18 или больше?

Используем более быстрые АЦП, затем производится фильтрация с децимацией, в результате чего получаем повышенное SNR.
Да, скажу сразу: сигнал комплексный - получается после фильтрации.


Цитата(Stanislav @ Aug 1 2008, 16:09) *
Если меняется, в каких пределах?

Возможно изменение в пределах всего спектра.

Цитата
Известна ли она в каждом из экспериментов?

Известна, но точность не гарантируется - может смещаться. Ну её значение ведь можно получить оценкой тем же fft? Или необходима большая точность, чем может предоставить какой-либо метод?

Цитата
Какова при этом интересующая полоса сигнала?

Менее 5 кГц с каждой стороны основной гармоники.


Цитата
Ага, это уже хорошо. Похоже, должно получиться. smile.gif Но прошу ответить и на остальные вопросы (в частности, привести временнЫе характеристики процесса: длительность записи, длительность паузы).

ЗЫ.Генераторы, видимо, тестируете? wink.gif

В том числе и генераторы. Вернее - это основное назначение.
Длительность записи - 4096 точек на 1 Мгц. Длительность паузы неопределена. Порядок - около 100 мс.

Цитата
Под когерентностью подразумевается наличие информации об изменении фазы от конца одного "куска" до начала другого (сохранение фазовых соотношений выборки и сигнала от одного куска к другому).
Если когерентность выборки не сохраняется, будем получать её искусственно. wink.gif
Моя идея состоит в измерении фазы "главного" колебания (известной частоты) в каждом из кусков, с последующим их, кусков, "разворотом" на нужный угол. Дальше их можно склеивать вплотную, и анализировать, как Вам заблагорассудится - сигнал получится когерентным. smile.gif
Сейчас времени мало, но вечером попробую изобразить, как это я себе представляю (ещё додумать надо smile.gif ). До этого прошу уточнить условия, и, если можно, выложить реализации "кусков" процесса.


Прикрепляю две реализации процесса. Файлы с подчёркиванием - im, без - re.
GetSmart
Цитата(Stanislav @ Aug 1 2008, 20:27) *
Это Вас никто не спрашивал, равно как и Ваших "подопечных". 01.gif
А меня как раз спрашивали. wink.gif

Убрал, как не имеющие отношения к теме. А сыпать бисер перед свиньями не считаю нужным. wink.gif

Вы из какой психушки сбежали? Я вас не спрашивал, а спросил автора темы - EKirshin-а. Я не у вас в гостях. И для справки - я один, у меня нет подопечных biggrin.gif Разве что, все вменяемые люди - мои "подопечные".

ЗЫ. Со внесезонной манией величия надо что-то делать. wink.gif Пока не поздно.
729
Цитата(GetSmart @ Aug 1 2008, 19:26) *
Вы из какой психушки сбежали? Я вас не спрашивал, а спросил автора темы - EKirshin-а. Я не у вас в гостях. И для справки - я один, у меня нет подопечных biggrin.gif

Не обращайте на него внимания. Мальчик у нас шибко умный, считает себя самым продвинутым. Ссылок на АЦП накидал. Он, наверно, думает, что если в шите на АЦП 100дБ написано, то они у него сразу и в кармане. Умник хренов. И еще есть хорошая поговорка про нетрогать и вонять.

Щас он к вечеру набросает тут, изобретатель, о чем уже в ветке толдычат. Осталось только посмотреть, как он размер пропусков будет мерять. Точнее, с какой книжки метод перепишетsmile.gif

Прошу прощения у автора топика, несдержался...
makc
За грубость и оффтопик трое участников уже получили предупреждения. Убедительно прошу соблюдать культуру общения и не создавать не относящихся к теме сообщений.
alex_os
Цитата(EKirshin @ Aug 1 2008, 19:25) *
Используем более быстрые АЦП, затем производится фильтрация с децимацией, в результате чего получаем повышенное SNR.
....
Менее 5 кГц с каждой стороны основной гармоники.
....

Дык если можете делать фильтрацию - децимацию, так уж фильтруйте и децимируйте до полосы скажем 20 кГц и соотв. частоте дискретизации. И на низкой Fs берете 4К отсчетов и анализируете спокойненько. (Зачем вам Fs = 1 МГц если полезная полоса 10КГц ?!). Попытка сшивания и фазирования блоков приведет скорее всего к паразитной фазовой модуляции в сшитом блоке, т.е. интересующая Вас палка в спектре размажется...
729
Цитата(alex_os @ Aug 1 2008, 21:42) *
Дык если можете делать фильтрацию - децимацию, так уж фильтруйте и децимируйте до полосы скажем 20 кГц и соотв. частоте дискретизации. И на низкой Fs берете 4К отсчетов и анализируете спокойненько. (Зачем вам Fs = 1 МГц если полезная полоса 10КГц ?!). Попытка сшивания и фазирования блоков приведет скорее всего к паразитной фазовой модуляции в сшитом блоке, т.е. интересующая Вас палка в спектре размажется...

Фазировка блоков именно к этому и приводит - уровень паразитной подставки примерно -70дБ даже на модели.


Цитата(EKirshin @ Aug 1 2008, 19:25) *
Длительность записи - 4096 точек на 1 Мгц. Длительность паузы неопределена. Порядок - около 100 мс.
Прикрепляю две реализации процесса. Файлы с подчёркиванием - im, без - re.

Длительность паузы у Вас в каких дискретах:
1. Периода дискретизации АЦП?
2. Периода следования отсчетов?
3. Не связана с этими периодами вообще?
alex_os
[quote name='729' date='Aug 1 2008, 21:55' post='447601']
Фазировка блоков именно к этому и приводит - уровень паразитной подставки примерно -70дБ даже на модели.
/quote]
Даже более того преставим что рядом с основной гармоникой есть "палка" меньшего уровня , когда сошьем блоки так чтобы основная гармоника была без разрыва фазы, "палка" же будет иметь разрывы фазы, в результате в сшивке вместо истинного спектра увидим основную гармонику и спектр фазоманипулированной палки , те ХЗЧ. Или пойти еще дальше возмем одну выборку (будем считать что она без шума) и n раз сшив ее саму с собой получим здоровую сшивку smile.gif - увидим ли в спектре этой хрени чего-то новое? Максимум что получится это более точно измерить частоту основной гармоники но это можно сделать и гораздо более простыми методами.
Так что природу не обманешь..
Stanislav
Цитата(blackfin @ Aug 1 2008, 18:57) *
Мы ждем.. Уже вечер.. smile.gif
Вечер, как известно, понятие растяжимое. smile.gif Во всяком случае, наступает у разных людей в разное время. Я вот, например, домой только час назад пришёл, а на работе, как известно, нужно иногда и работать. wink.gif
Поскольку реализации процесса выложены, решил написать программку на Матлабе, дабы можно было с ними поработать "в реале". Да и формУлы писать лень. Если дождётесь - через час-другой будет "рыба". smile.gif

Цитата(EKirshin @ Aug 1 2008, 19:25) *
Возможно изменение в пределах всего спектра.

Известна, но точность не гарантируется - может смещаться. Ну её значение ведь можно получить оценкой тем же fft? Или необходима большая точность, чем может предоставить какой-либо метод?
Нет, точности обычного ДПФ, думается, будет достаточно. Если частота (максимум спектральной плотности) была бы известна точно, гимору было бы поменьше, а сам алгоритм - гораздо лаконичнее.


Цитата(EKirshin @ Aug 1 2008, 19:25) *
...Менее 5 кГц с каждой стороны основной гармоники.
......................
Длительность записи - 4096 точек на 1 Мгц. Длительность паузы неопределена. Порядок - около 100 мс.
Пауза велика для наблюдения спектральных компонентов, отстоящих на 5 кГц с каждой стороны. При такой паузе появится фазовая неоднозначность для компонентов спектра, лежащих далее ~ +/- 10 Гц относительно основной частоты.
Однако, способ обойти эту трудность всё-таки есть. smile.gif Состоит он в измерении интервалов времени между кусками с точностью ~ 200 мкс. После этого можно будет скорректировать фазовый набег с нужной точностью и устранить фазовые неоднозначности.
Над ньюансами, впрочем, стОит подумать. Подробнее изложу после решения основной задачи - сшивки кусков, при условии, что набег фаз интересующих компонентов спектра относительно основной частоты не превысит одного периода.

Цитата(EKirshin @ Aug 1 2008, 19:25) *
...Прикрепляю две реализации процесса. Файлы с подчёркиванием - im, без - re.
Добре, посмотрю. Результатов подождите, видимо, до завтрашнего вечера.
shasik
Я, конечно, дико извиняюсь, что без стука
Почитайте вот это:
Выдержка из книги Прикладной Анализ Случайных Данных Бендат Дж, Пирсол А., 1989 Нажмите для просмотра прикрепленного файла
Может подойдет. Если Вам уже это советовали, то извиняйте, но перечитывать все посты, да еще и разбираться в них - лень, слишком много написали. Чем больше слов, тем меньше истины.
ЗЫ. Книга полностью есть в сети, не найдете вышлю.
Stanislav
Цитата(alex_os @ Aug 1 2008, 21:42) *
Дык если можете делать фильтрацию - децимацию, так уж фильтруйте и децимируйте до полосы скажем 20 кГц и соотв. частоте дискретизации. И на низкой Fs берете 4К отсчетов и анализируете спокойненько. (Зачем вам Fs = 1 МГц если полезная полоса 10КГц ?!).
А какой смысл? Разрешения по частоте это не увеличит; можно будет только вычислительный ресурс сэкономить, но в контексте данной темы это не принципиально.

Цитата(alex_os @ Aug 1 2008, 21:42) *
...Попытка сшивания и фазирования блоков приведет скорее всего к паразитной фазовой модуляции в сшитом блоке, т.е. интересующая Вас палка в спектре размажется...
А вот и посмотрим, как она размажется. smile.gif
Смысл "сшивки" как раз и состоит в том, чтобы устранить паразитные перескоки фаз между блоками.

Цитата(alex_os @ Aug 1 2008, 21:42) *
...Даже более того преставим что рядом с основной гармоникой есть "палка" меньшего уровня , когда сошьем блоки так чтобы основная гармоника была без разрыва фазы, "палка" же будет иметь разрывы фазы, в результате в сшивке вместо истинного спектра увидим основную гармонику и спектр фазоманипулированной палки , те ХЗЧ.
А если хорошо подумать? wink.gif
Близкие к основной "палке" компоненты спектра когерентны по отношению к ней - сигнал стационарен. Пересчёт поворачивающих множителей для них не составит труда. smile.gif

Цитата(alex_os @ Aug 1 2008, 21:42) *
...Или пойти еще дальше возмем одну выборку (будем считать что она без шума) и n раз сшив ее саму с собой получим здоровую сшивку smile.gif - увидим ли в спектре этой хрени чего-то новое? Максимум что получится это более точно измерить частоту основной гармоники но это можно сделать и гораздо более простыми методами.
Ну, это уже лишнее. biggrin.gif

Цитата(alex_os @ Aug 1 2008, 21:42) *
...Так что природу не обманешь.
Это точно.
alex_os
Цитата(Stanislav @ Aug 1 2008, 23:23) *
А какой смысл? Разрешения по частоте это не увеличит; можно будет только вычислительный ресурс сэкономить, но в контексте данной темы это не принципиально.

Дык я думал что разрешение по частоте пропорционально Fs/Nfft smile.gif.
Stanislav
Цитата(alex_os @ Aug 1 2008, 23:32) *
Дык я думал что разрешение по частоте пропорционально Fs/Nfft smile.gif .
Дык, Вы ж децимировать предлагаете. smile.gif Сколько выборок останется от 4096?

ЗЫ. Понял. Вы предлагаете брать все 4096 отсчётов на НЧ, увеличив время наблюдения. Что ж, тоже вариант. Не знаю, однако, насколько реализуемый и удобный для Автора темы.

Лана, пора делом заняться... biggrin.gif

ЗЗЫ. Посмотрел файлы. Похоже, что у Автора темы всё именно так и сделано - сигнал очень низкочастотный, и в квадратурах.
Если это так, разрешение нужно всё-таки более высокое, чем Вы предлагаете, и от сшивки никуда не деться...
2 EKrishin
Скажите, в файлах, выложенных Вами, частота выходных отсчётов действительно 1 МГц? Или всё-таки менее?
Stanislav
Вот обещанная "рыба".
Код
function phase_adj()
fsampl = 1000;      % частота дискретизации, кГц
freq = 68;          % Частота гармонического тона, кГц
len_buf = 4096;     % длина буфера, отсчёты
shift = pi/4;       % величина фазового сдвига между кусками, рад

% Заполняем буферы сигналом и аддитивным шумом
buffer_1 = sin(2*pi*(1:len_buf)*freq/fsampl)+(1e-5)*randn(1,len_buf);
buffer_2 = sin(2*pi*(1:len_buf)*freq/fsampl+shift)+(1e-5)*randn(1,len_buf);

% Пытаемся склеить без учёта фазовых соотношений
sum_buf_1 = [buffer_1, buffer_2];

% Делаем оценку спектров кусков и склейки, используя спектральные окна
specw_1=fft(blackman(len_buf)'.*buffer_1);
specw_2=fft(blackman(len_buf)'.*buffer_2);

sp_sum_1=fft(hamming(2*len_buf)'.*sum_buf_1);

% Находим фазовые спектры кусков
ang_1 = angle(specw_1);
ang_2 = angle(specw_2);

% Находим положение максимума модуля спектральной функции
[max_1, frq_1] = max(abs(specw_1));

% Находим фазу основного тона в конце 1-го куска (не доделано!)
ang_1_end = ang_1(frq_1);

% Находим разность фаз
diff_ang=ang_1_end-ang_2(frq_1);

% Находим поворачивающий множитель для частоты основного тона
rotator=-exp(i*diff_ang);

% Преобразуем второй буфер в комплексный вид
buf_2_hilb=hilbert(buffer_2);

% Разворачиваем его на величину сдвига фаз (нужно ещё ввести компенсацию по
% частоте, проще говоря - временнОй сдвиг)
buf_2_rot=real(buf_2_hilb*rotator);

% Склеиваем
sum_buf_2 = [buffer_1, buf_2_rot];

% Находим модуль спектра склейки
sp_sum_2=fft(hamming(2*len_buf)'.*sum_buf_2);

% Выводим результаты
figure (1)
plot (buffer_1(1:100))
hold on
plot (buffer_2(1:100), 'r')
hold off
grid on
title ('Signals')

figure (2)
plot ((4032:4160), sum_buf_1(4032:4160))
grid on
title ('Glue 1')

figure (3)
plot ((4032:4160), sum_buf_2(4032:4160), 'Color', [0.9 0 0])
grid on
title ('Glue 2')

figure (4)
semilogy (500:600, abs(sp_sum_1(500:600)))
hold on
semilogy (500:600, abs(sp_sum_2(500:600)), 'r')
hold off
grid on
title ('Spectra')


return;
Правда, она годится лишь для демонстрации принципа: для условий задачи она пока не слишком хорошо подходит - не сделан временнОй сдвиг, поэтому, компоненты, отстоящие от основной частоты на значительную величину, будут "склеиваться" плохо. Кроме того, фаза определяется весьма грубо, и нет процедуры её коррекции от перескока. Однако, вблизи центральной частоты всё будет более-менее хорошо.
За ошибки прошу не карать строго - набросал относительно быстро, и они возможны. smile.gif

Завтра постараюсь сделать аккуратно, со всеми необходимыми компенсациями. Скорее всего - в спектральной области.
Ниже приведены картинки.

Нажмите для просмотра прикрепленного файла - фрагменты исходных сигналов.

Нажмите для просмотра прикрепленного файла - склейка без разворота фазы. Виден её скачок.

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

Нажмите для просмотра прикрепленного файла - фрагмент спектров склеек. Синий - без разворота, красный - с разворотом. Разрешение по частоте увеличилось по сравнению с исходными кусками в 2 раза! cool.gif
fontp
Цитата(Stanislav @ Aug 2 2008, 04:00) *
Нажмите для просмотра прикрепленного файла - фрагмент спектров склеек. Синий - без разворота, красный - с разворотом. Разрешение по частоте увеличилось по сравнению с исходными кусками в 2 раза! cool.gif


Маклауд такие синусоиды считает значительно точнее, в разы.

Вы же сами утвеждали, что разрешение для идеальной одиночной синусоиды не определено.
Дайте две.

Или лучше внесём в модель фазовые шумы, возьмём толстый фломастер и напишем на крышке прибора:

" Прибор для измерения фазовых шумов генератора посредством экстраполяции фазы"
и подпись

"барон Мюнхаузен" cool.gif

ЗЫ. Вообще-то постановка задачи у автора опять не получилась. Если идеальная синусоида - то спектр её делта-функция. Осталось оценить частоту. Как было сказано - это не тот случай.
Значит скорее всего - это узкополосный сигнал, например сигнал аналогового генератора. Или DDS. Или шум пропущенный через узкополосный фильтр. Нужно, оценить уширение спектра с целью определить параметры стабильности. Что-то в этом духе
GetSmart
Цитата(fontp @ Aug 2 2008, 15:01) *
" Прибор для измерения фазовых шумов генератора посредством экстраполяции фазы"
и подпись

"барон Мюнхаузен" cool.gif

А главное, во всём виноват Гильберт с его заумным фильтром biggrin.gif

Цитата(EKirshin)
Задача следующая. Хочется "видеть", что происходит в районе частоты, поданной на вход устройства с большим разрешением по частоте. Оставшаяся часть спектра нас не интересует (вернее, интересует, но уже в других целях).
...
Под стационарностью я понимаю неизменность параметров сигнала: частота сигнала (синусоиды) остаётся неизменной (не учитывая качество самого сигнала: дрожание частоты и т.п., изменяющие частоту сигнала), уровень шума и его другие характеристики также неизменны.
Один из рассматриваемых нами способов - это "усреднение" различных реализаций сигнала. Однако, не ясно, как склеить M кусков, чтобы получить из этого какую-то дополнительную информацию.

Какие параметры (качества) сигнала Вы хотите получить от метода измерения? И до сих пор не ясно есть ли в сигнале кроме основной синусоиды другие сигналы? (ниже -60 дб не важно)

По поводу "как склеить М кусков чтобы получить дополнительную информацию". Вас не устроит в качестве результата статистика максимально точной частоты основной грамоники в каждом из кусков и её среднеквадратичного отклонения? Чем больше будет накоплено кусков, тем более точный будет результат вычисления средней частоты (основного пика в FFT). Если не пропорционально кол-ву кусков, то хотя бы корню квадратному из их кол-ва. Причём, здесь уже не будет проблемы с ограниченностью псевдокоггерентного FFT, у которого точность никогда не превысит точность склеек, которая может быть намного хуже разрешающей способности FFT M*N.
Stanislav
Цитата(fontp @ Aug 2 2008, 13:01) *
Маклауд такие синусоиды считает значительно точнее, в разы.
Странно, что Вы упорно не желаете понять простой вещи: Автору темы нужно не точное измерение частоты гармонического сигнала, а получение модуля спектральной функции с разрешением по частоте более высоким, чем даёт каждая из накопленных последовательностей.
Найти частоту гармонического сигнала с хорошей точностью при таком отношении С/Ш можно и без Маклауда.
ЗЫ. Так Маклауд, или всё-таки "не-Маклауд"? Как по-русски писать правильно? wink.gif

Цитата(fontp @ Aug 2 2008, 13:01) *
...Вы же сами утвеждали, что разрешение для идеальной одиночной синусоиды не определено.
Дайте две.
Это был только набросок алгоритма, ещё не работающий, как положено. Две частоты дам ниже.

Цитата(fontp @ Aug 2 2008, 13:01) *
...Или лучше внесём в модель фазовые шумы, возьмём толстый фломастер и напишем на крышке прибора:

" Прибор для измерения фазовых шумов генератора посредством экстраполяции фазы"
и подпись

"барон Мюнхаузен" cool.gif
Чушь.
Шумы в модели присутствуют. Для проверки разрешения синусоид достаточно.
Кроме того, Вы не поняли сути предложенного метода: ни о какой "экстраполяции фазы" речь здесь не идёт.

Цитата(fontp @ Aug 2 2008, 13:01) *
...ЗЫ. Вообще-то постановка задачи у автора опять не получилась. Если идеальная синусоида - то спектр её делта-функция. Осталось оценить частоту. Как было сказано - это не тот случай.
Что Вам не нравится в постановке? По-моему, теперь все необходимые данные есть.
Цитата(fontp @ Aug 2 2008, 13:01) *
...Значит скорее всего - это узкополосный сигнал, например сигнал аналогового генератора. Или DDS. Или шум пропущенный через узкополосный фильтр. Нужно, оценить уширение спектра с целью определить параметры стабильности. Что-то в этом духе
Ну, наконец-то...
Я об этом с начала темы талдычу. Да и EKrishin писал недвусмысленно, что ему нужен именно спектр сигнала вблизи основной частоты. Просто удивительно, что там могло быть непонятного?

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

Код
function phase_adj()  
fsampl = 1000;      % частота дискретизации, кГц
freq = 40;          % частота гармонического тона, кГц

len_buf = 4096;     % длина буфера, отсчёты
shift = pi;       % величина фазового сдвига между кусками, рад

% Заполняем буферы сигналом и аддитивным шумом
buffer_1 = sin(2*pi*(0:len_buf-1)*freq/fsampl)+(1e-5)*randn(1,len_buf);
buffer_1 = buffer_1+0.03*sin(2*pi*(0:len_buf-1)*(freq+0.5)/fsampl);

shift_1=shift; % не корректно; токмо для ускорения процесса

buffer_2 = sin(2*pi*(0:len_buf-1)*freq/fsampl+shift)+(1e-5)*randn(1,len_buf);
buffer_2 = buffer_2+0.03*sin(2*pi*(0:len_buf-1)*(freq+0.5)/fsampl+shift_1);

% Пытаемся склеить без учёта фазовых соотношений
sum_buf_1 = [buffer_1, buffer_2];

% Делаем оценку спектров кусков и склейки, используя спектральные окна
specw_1=fft(hamming(len_buf)'.*buffer_1);
specw_2=fft(hamming(len_buf)'.*buffer_2);
sp_sum_1=fft(hamming(2*len_buf)'.*sum_buf_1);

% Находим фазовые спектры кусков
ang_1 = angle(specw_1);
ang_2 = angle(specw_2);

% Находим положение максимума модуля спектральной функции
[max_1, frq_1] = max(abs(specw_1));

% Находим разность фаз
diff=ang_1(frq_1)-ang_2(frq_1);
dif_ang=mod(diff+2*pi*freq/fsampl*len_buf, 2*pi);

% Находим поворачивающий множитель для частоты основного тона
rotator=exp(i*dif_ang);

% Преобразуем второй буфер в комплексный вид
buf_2_hilb=hilbert(buffer_2);

% Разворачиваем его на величину сдвига фаз (более правильно делать сдвиг во времени)
buf_2_rot=real(buf_2_hilb*rotator);

% Склеиваем
sum_buf_2 = [buffer_1, buf_2_rot];

% Находим модуль спектра склейки
sp_sum_2=fft(hamming(2*len_buf)'.*sum_buf_2);

% Выводим результаты
figure (1)
plot (1:100, buffer_1(1:100))
hold on
plot (1:100, buffer_2(1:100), 'r')
hold off
ylim([-1.5 1.5]);
grid on
title ('Signals')

figure (2)
plot ((4046:4146), sum_buf_1(4046:4146))
ylim([-1.5 1.5]);
grid on
title ('Glue 1')

figure (3)
plot ((4046:4146), sum_buf_2(4046:4146), 'Color', [0.9 0 0])
ylim([-1.5 1.5]);
grid on
title ('Glue 2')

figure (4)
semilogy (1:1000, abs(sp_sum_2(1:1000)))
grid on
title ('Spectrum of long sequence')

figure (5)
semilogy (1:1000, abs(specw_1(1:1000)))
grid on
title ('Spectrum of short sequence')
return;


fontp, наблюдайте внимательно:

Нажмите для просмотра прикрепленного файла- модуль спектра последовательности одинарной длины,

Нажмите для просмотра прикрепленного файла- модуль спектра последовательности двойной длины, полученной путём "склеивания". wink.gif

И никаких Маклаудов. biggrin.gif


...................................................
Далее, если позволит время, попробую сделать то же самое через Фурье - должно получиться красивее. cool.gif
alex_os
Цитата
Нажмите для просмотра прикрепленного файла- модуль спектра последовательности двойной длины, полученной путём "склеивания". wink.gif

И никаких Маклаудов. biggrin.gif
...................................................
Далее, если позволит время, попробую сделать то же самое через Фурье - должно получиться красивее. cool.gif


Фаза второй палки (shift_1) у Вас удачно попала smile.gif. Если взять shift_1 = 1 то от второй палки рожки да ножки остаются ...

Нажмите для просмотра прикрепленного файла
Stanislav
Цитата(alex_os @ Aug 2 2008, 21:17) *
Фаза второй палки (shift_1) у Вас удачно попала smile.gif . Если взять shift_1 = 1 то от второй палки рожки да ножки остаются ...
Это верно. Там сдвиг фаз второй синусоиды берётся "от балды", о чём и написано в каменте (см. текст программы), и поэтому подобрана "хорошая" частота второй синусоиды. Но, если посчитать её фазу аккуратно, а потом ещё ввести при формировании комплексного сигнала коррекцию фазы по частоте (или, проще, сдвиг во времени), то всё будет в ажуре. smile.gif Корректирующий фильтр считать лень, но, если время будет, сделаю... Попробую в базисе Фурье алгоритм реализовать, только попожже.
На коротких кусках же разрешить вторую частоту вообще не удаётся...
alex_os
Цитата(Stanislav @ Aug 2 2008, 21:31) *
Это верно. Там сдвиг фаз второй синусоиды берётся "от балды", о чём и написано в каменте (см. текст программы), и поэтому подобрана "хорошая" частота второй синусоиды. Но, если посчитать её фазу аккуратно, а потом ещё ввести при формировании комплексного сигнала коррекцию фазы по частоте (или, что проще, сдвиг во времени), то всё будет в ажуре. smile.gif Корректирующий фильтр считать лень, но, если время будет, сделаю... Попробую в базисе Фурье алгоритм реализовать, только попожже.
На коротких кусках же разрешить вторую частоту вообще не удаётся...

А откуда Вы узнаете сдвиг во времени если задержка между блоками не известна?!
Stanislav
Цитата(alex_os @ Aug 2 2008, 21:41) *
А откуда Вы узнаете сдвиг во времени если задержка между блоками не известна?!
Измерить!
Ну, ей-богу... Если какие-то величины не известны, кто мешает их получить из сигнала, или самого процесса ввода данных? Такая простая мысль, как видно, не посещает многих читателей умных книжек.
Как я и писал уже, слишком точно временнОй сдвиг измерять и не нужно. Но детали следует обдумать.
729
Цитата(EKirshin @ Aug 1 2008, 19:25) *
Используем более быстрые АЦП, затем производится фильтрация с децимацией, в результате чего получаем повышенное SNR.

Длительность записи - 4096 точек на 1 Мгц. Длительность паузы неопределена. Порядок - около 100 мс.
Прикрепляю две реализации процесса. Файлы с подчёркиванием - im, без - re.

Простите, но в обоих представленных фрагментах SNR около 67дБ, SFDR чуть меньше 74дБ. Это действительно такие (явно не 100дб SNR) фрагменты?
Stanislav
Вот, немного поправил программу, и подбавил аддитивного шума.
Теперь вторая синусоида в склейке разрешается при любых настройках, даже без коррекции её фазы.
Код
function phase_adj()
fsampl = 1000;      % частота дискретизации, кГц
freq = 41;          % Частота гармонического тона, кГц
len_buf = 4096;     % длина буфера, отсчёты
gap = 2.5;          % интервал между кусками, мс, не более 8

% Формируем модель "реального" сигнала
signal = sin(2*pi*(0:4*len_buf)*freq/fsampl)+(1e-2)*randn(1, 4*len_buf+1)+...
     0.03*cos(2*pi*(0:4*len_buf)*(freq+0.5)/fsampl);

% Заполняем буферы (теперь всё точно)
buffer_1 = signal(1:len_buf);
sampl_gap = floor(1e6*gap/fsampl);
buffer_2 = signal(len_buf+1+sampl_gap:len_buf+sampl_gap+len_buf);

% Пытаемся склеить без учёта фазовых соотношений
sum_buf_1 = [buffer_1, buffer_2];

% Делаем оценку спектров кусков, используя спектральные окна
specw_1 = fft(chebwin(len_buf, 60)'.*buffer_1);
specw_2 = fft(chebwin(len_buf, 60)'.*buffer_2);

% Находим фазовые спектры кусков
ang_1 = angle(specw_1);
ang_2 = angle(specw_2);

% Находим положение максимума модуля спектральной функции
[max_1, frq_1] = max(abs(specw_1));

% Находим разность фаз с учётом набега за кусок
diff = ang_1(frq_1)-ang_2(frq_1);
dif_ang = mod(diff+2*pi*len_buf*freq/fsampl, 2*pi);

% Находим поворачивающий множитель для частоты основного тона
rotator = exp(i*dif_ang);

% Преобразуем второй буфер в комплексный вид
buf_2_hilb=hilbert(buffer_2);

% Разворачиваем его на величину сдвига фаз (более правильно делать сдвиг во времени)
buf_2_rot=real(buf_2_hilb*rotator);

% Склеиваем
sum_buf_2 = [buffer_1, buf_2_rot];

% Находим модуль спектра склейки
sp_sum_2=fft(chebwin(2*len_buf, 60)'.*sum_buf_2);

% Выводим результаты
bins = (0:len_buf-1)*fsampl/len_buf;
figure (1)
plot (1:100, buffer_1(1:100))
hold on
plot (1:100, buffer_2(1:100), 'r')
hold off
ylim([-1.5 1.5]);
grid on
title ('Signals')

figure (2)
plot ((4046:4146), sum_buf_1(4046:4146))
ylim([-1.5 1.5]);
grid on
title ('Glue 1')

figure (3)
plot ((4046:4146), sum_buf_2(4046:4146), 'Color', [0.9 0 0])
ylim([-1.5 1.5]);
grid on
title ('Glue 2')

figure (4)
semilogy (bins(1:1000), abs(specw_1(1:1000)))
ylim([0.1 1000]);
grid on
title('Spectrum of short sequence')

figure (5)
semilogy (bins(1:1000)/2, abs(sp_sum_2(1:1000)))
ylim([0.1 1000]);
grid on
title('Spectrum of long sequence')
return;

Нажмите для просмотра прикрепленного файла - модуль спектра последовательности одинарной длины,

Нажмите для просмотра прикрепленного файла - модуль спектра склейки. cool.gif

Продолжение следует. smile.gif
EKirshin
Цитата(Stanislav @ Aug 1 2008, 23:37) *
2 EKrishin
Скажите, в файлах, выложенных Вами, частота выходных отсчётов действительно 1 МГц? Или всё-таки менее?

Да, действительно, 1 Мгц. А что не так?

Цитата(fontp @ Aug 2 2008, 13:01) *
Значит скорее всего - это узкополосный сигнал, например сигнал аналогового генератора. Или DDS. Или шум пропущенный через узкополосный фильтр. Нужно, оценить уширение спектра с целью определить параметры стабильности. Что-то в этом духе

Да, именно это и интересно. Вообще хотелось получать выборку в, скажем, 65536 точек, строить большой спектр и смореть с разрешением порядка 15-20 Гц. Но аппаратные средства не позволяют. Поэтому ищем путь сделать нечто из различных кусков сигнала.


Цитата(729 @ Aug 3 2008, 00:36) *
Простите, но в обоих представленных фрагментах SNR около 67дБ, SFDR чуть меньше 74дБ. Это действительно такие (явно не 100дб SNR) фрагменты?

Да, действительно. Указанные 100db - это, пожалуй, максимум. А данные две реализации - лишь пример.
Stanislav
Цитата(729 @ Aug 1 2008, 21:55) *
Фазировка блоков именно к этому и приводит - уровень паразитной подставки примерно -70дБ даже на модели.
На какой модели? Не могли бы обнародовать, а то непонятно, о чём это Вы?

Цитата(EKirshin @ Aug 3 2008, 11:10) *
Да, действительно, 1 Мгц. А что не так?
Нет, ничего...

Цитата(EKirshin @ Aug 3 2008, 11:10) *
...Вообще хотелось получать выборку в, скажем, 65536 точек, строить большой спектр и смореть с разрешением порядка 15-20 Гц. Но аппаратные средства не позволяют. Поэтому ищем путь сделать нечто из различных кусков сигнала.
Скажите, а почему предложение ув. alex_os не подходит (пост №71)?
Если не трудно, опишите систему сбора данных подробнее.
fontp
Цитата(Stanislav @ Aug 2 2008, 19:15) *
Странно, что Вы упорно не желаете понять простой вещи: Автору темы нужно не точное измерение частоты гармонического сигнала, а получение модуля спектральной функции с разрешением по частоте более высоким, чем даёт каждая из накопленных последовательностей.
Найти частоту гармонического сигнала с хорошей точностью при таком отношении С/Ш можно и без Маклауда.
ЗЫ. Так Маклауд, или всё-таки "не-Маклауд"? Как по-русски писать правильно? wink.gif


Слишком много слов. Чтобы иметь РАЗРЕШЕНИЕ в классическом смысле Вы должны взять 2 гармоники равной амплитуды неразрешимые исходным ДПФ (действительно разность частот 0.5 в Ваших обозначениях), причём некратных шагу ДПФ. Берите +0.33 и +0.83 для начала. Потом разрешать Вы их должны всегда (с вероятностью 1, любые частоты f1 и f1+0.5), поскольку автору нужно иметь измерительный прибор, а не пробник.

Вот эту ерунду Вы обещали получить. Но нарисовали единственную гармонику.

Остальное, что я написал про фазовые шумы - это попытка дать Вам шанс, упростив задачу. Забыть о РАЗРЕШЕНИИ (оно ведь действительно не нужно автору так же как и точность измерения часоты), а попытаться измерять расширение спектральной линии ВЫЗВАННОЕ фазовыми шумами у единственной гармоники. При определённой модели фазовых шумов, может быть, что-то и получится. Но как инструментальное измерительное средство - никак, пробничек получится.

Пример: аналоговый генератор у которого фаза прыгает на ПИ, как обычно, но не в случайные моменты времени, а периодически, примерно так же как и у измерителя. Фишка так легла, что все скачки фазы легли между блоками измерений. Ваш прибор покажет, что генератор идеален и фазовые шумы отсутствуют, поскольку расширение спектральной линии соответствуют погрешности прибора.

Цитата(Stanislav @ Aug 2 2008, 19:15) *
Чушь.
Шумы в модели присутствуют. Для проверки разрешения синусоид достаточно.
Кроме того, Вы не поняли сути предложенного метода: ни о какой "экстраполяции фазы" речь здесь не идёт.


Пост отредактирован. fontp - устное предупреждение за хамство. Еще одно такое полуоскорбление - будет readonly. DS
Stanislav
Цитата(fontp @ Aug 3 2008, 12:09) *
Слишком много слов.
Это у меня-то? 07.gif
Я пишу здесь по делу, и слов употребляю ровно столько, сколько нужно для доходчивого пояснения.
Не моя вина, что некоторым объяснять нужно гораздо более одного раза.
Лучше обратите внимание на сообщения некоторых других участников темы. Вот где уж действительно "вольница мысли"...
И ещё: не поленитесь, пожалуйста, уделить внимание изучению английского языка. В части произношения имён собственных шотландского происхождения. Возможно, желания писать глупости после этого поубавится.

Цитата(fontp @ Aug 3 2008, 12:09) *
...Чтобы иметь РАЗРЕШЕНИЕ в классическом смысле Вы должны взять 2 гармоники равной амплитуды неразрешимые исходным ДПФ (действительно разность частот 0.5 в Ваших обозначениях), причём некратных шагу ДПФ.
Пожалуйста, не нужно адресовать мне, да ещё кричащими буквами, прописную истину, которую я безуспешно пытался пояснить Вам же с самого начала темы (см. посты №№ 6,8 и т.д, вплоть до цитируемого Вами). Если считаете, что понимание всё-таки наступило, пожалуйста, не нужно выражать его столь эмоционально.
Я же так не считаю. Посему, "ликбез" придётся продолжить... Дальше прошу читать внимательно: повторяться более не желаю.

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

Возражения имеются? Если да - только на примере: словесный спам достал уже.

Цитата(fontp @ Aug 3 2008, 12:09) *
...Берите +0.33 и +0.83 для начала. Потом разрешать Вы их должны всегда (с вероятностью 1, любые частоты f1 и f1+0.5), поскольку автору нужно иметь измерительный прибор, а не пробник.

Вот эту ерунду Вы обещали получить. Но нарисовали единственную гармонику.
Во-первых, я никому, в том числе, и Вам, разрешать ничего не должен.
Во-вторых, как это "единственную", если их там две? 07.gif
Ей-богу, как дитё малое... Сначала дай две частоты, а теперь ещё и третью... Эдак не напасёшься...
Могли бы и сами это проделать. Я не прошу изучать внимательно программу, хотя там и каменты в каждой строчке, но "сгенерить" ещё одну синусоиду через копи-паст, наверное, можно было и самостоятельно.

Так уж и быть, проделаю это за Вас, c названным отклонением частот. Интервал выбран <1мс.

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

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

Цитата(fontp @ Aug 3 2008, 12:09) *
...Остальное, что я написал про фазовые шумы - это попытка дать Вам шанс, упростив задачу.
Да бросьте.
Не нужно мне "давать шанс", равно как и "упрощать задачу". Тем более, что это не моя задача, а задача автора темы. Так что прошу обратить внимание на задачу, и впредь писать по существу... кхм... дела.

Цитата(fontp @ Aug 3 2008, 12:09) *
...Забыть о РАЗРЕШЕНИИ (оно ведь действительно не нужно автору так же как и точность измерения часоты),
Да что Вы говорите? Маклауда, стало быть, уже побоку?

Опять сильное заявление. К которому нужно, как я уже и объяснял, прибавлять "по моему мнению".
Читайте внимательнее постановку задачи. Можно начать с названия темы.

ЗЫ. Всеобъемлемость Вашего утверждения легко опровергнуть примером. Но - по запросу.

Цитата(fontp @ Aug 3 2008, 12:09) *
...а попытаться измерять расширение спектральной линии ВЫЗВАННОЕ фазовыми шумами у единственной гармоники. При определённой модели фазовых шумов, может быть, что-то и получится. Но как инструментальное измерительное средство - никак, пробничек получится.

Пример: аналоговый генератор у которого фаза прыгает на ПИ, как обычно, но не в случайные моменты времени, а периодически, примерно так же как и у измерителя. Фишка так легла, что все скачки фазы легли между блоками измерений. Ваш прибор покажет, что генератор идеален и фазовые шумы отсутствуют, поскольку расширение спектральной линии соответствуют погрешности прибора.
Ничего не понял...
Если у Вас есть конкретная тема для работы с соотв. финансированием - пишите в личку, сторгуемся. smile.gif
Если хотите удовлетворить собственное любопытство - создайте свой топик. Возможно, приму участие в обсуждении.

Цитата(fontp @ Aug 3 2008, 12:09) *
Перестаньте кривляться
Не пытался, даже ничуть. Отвечал на конкретный тезис известного барона по поводу "экстраполяции фазы".

........................................
Вам, вероятно, доводилось читать хорошие книги по теории обработки сигналов. По крайней мере, ссылки приводите иногда весьма полезные.
Однако, мне кажется, что к решению проблем, выходящих за рамки учебников, Вы подходите сугубо формально, и самую суть процесса обработки сигналов не понимаете. Для этого явления, происходящие в природе и в электронных схемах, нужно чувствовать.
Нестандартные задачи, для которых нельзя найти методов решения в литературе, Вам не по плечу... Вероятно, сказывается недостаток опыта практической деятельности...
Повторюсь: это лишь моё мнение.
Для меня, например, с момента осознания предварительных данных, стало очевидно, что при удовлетворении ряда условий, задача всё-таки имеет решение. Идею я предложил. Если позволит время, попытаюсь её реализовать в алгоритме строго. Хотя бы потому, что это уже стоило мне потраченного времени и предупреждения от администрации "с занесением".

Прошу прощенья за оффтоп...
GetSmart
Цитата(Stanislav @ Aug 3 2008, 23:29) *
Нажмите для просмотра прикрепленного файла - стык кусков до коррекции фазы основной частоты,
Нажмите для просмотра прикрепленного файла - стык кусков после коррекции фазы основной частоты,
Нажмите для просмотра прикрепленного файла - модуль спектральной функции одного куска,

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

И что мы видим? В исходных данных было две разных, но близких частоты (примем на веру) одинаковой амплитуды. На спектре склейки только одна явная вершина. Остальные два пика маленькие, грубо ~50 раз меньше основного. Почему их 2 и почему в 50 раз меньше - хз. Вобщем окончательный спектр представляет совсем не то, что нужно автору. Кроме того, этот спектр до неприличия похож на спектр склейки одинаковых синусоид. Да и частоты этих пиков на спектрограмме слишком отдалены друг от друга.
alex_os
Сделал модельку аналогичную модели Stanislav'а, только сигнал комплексный + априорно известна частота основной гармоники + произвольное число блоков объединяется. Интересная штука получилась! По синусоиде работает замечательно, спектр склеенного и оригинальных сигналов совпадают один в один даже при малых snr. Если попытаться обработать узкололосный процесс , наблюдается замечательный эффект "выпрямления фазы" и спектр склейки получается более узкий чем спектр оригинального сигнала.
Оригинальный сигнал темно синий , склейка - зеленая, ось Y - дБ.

Нажмите для просмотра прикрепленного файла

несомненно полезный прибор можно сделать на таком принципе, может сильно пригодится для чего-либо сдачи заказчику smile.gif....
Mфайл
Нажмите для просмотра прикрепленного файла
Stanislav
С комплексным сигналом работать проще - гильберта делать не нужно.
Сегодня вечером (это после 0 часов smile.gif ) попробую выложить очередную итерацию...

.................................................................
Программу я писал так, чтобы в ней мог разобраться даже студент - комментарии предваряют каждое действие. Конечно, для болванов, не способных понять её смысл даже в таком виде, она не может быть адаптирована - для этого просто не существует адекватного языка.
alexkok
Цитата(EKirshin @ Jul 30 2008, 18:01) *
Вопрос: можно ли, имея M кусков этого сигнала использовать их для получения спектра сигнала размерностью M*N?

Я думаю что это не реализуемо.
Метод, который предлагает Stanislav - подкручивание фазы основной составляющей, будет работать (возможно, не уверен) только для составляющих коррелированных с основной гармоникой.
Для всех прочих он работать не будет, т.к. они будут складываться с произвольными фазами.
Если есть возможность получать время начала каждой пачки с точностью до отсчёта, то можно вставить пустые (забитые нулями) промежутки и расфильтровать суммарную выборку.
На каждый из этих "N" кусков наложить окно перед склейкой.

Если же время начала получить невозможно, то можно лишь слегка улучшить разрешение если до БПФ вычесть из сигнала основную составляющую и фильтровать через БПФ только остаток.
Такой метод применяется при аналоговых измерениях чистоты спектра.
Преимуществом при этом будет возможность применения более узкополосного окна или БПФ без окна вообще.
Если есть априорная информация об измеряемых составлящих - как правило это гармоники сети и частоты сравнения в синтезаторах, то можно ещё попытаться улучшить измерение, но не БПФом.
Stanislav
Цитата(alexkok @ Aug 5 2008, 00:06) *
Я думаю что это не реализуемо.
Метод, который предлагает Stanislav - подкручивание фазы основной составляющей, будет работать (возможно, не уверен) только для составляющих коррелированных с основной гармоникой...
Это основное ограничение, никуда не деться. Однако, остальное можно и нужно считать шумом, а как мы выяснили, он эргодичен. smile.gif

Кроме того, коррекция разбежки фаз основного и других тонов в предложенной программе не реализована - значит, при достаточно больших интервалах, коррелированность будет потеряна.
С подкруткой фазы разберусь после - уж больно она заманчива для комплексного сигнала, имеющегося в распоряжении EKrishin. Нужно сделать корр. фильтр, который в интересующей полосе будет подкручивать фазу пропорционально частоте.
Сейчас попытаюсь предложить метод "временнОй" склейки. Суть та же - по изменению фазы основного колебания судить о временнОм сдвиге, а затем компенисировать его. Сделано пока что не слишком аккуратно, но результат получается лучше, чем при разворачивании фаз всего сигнала на один и тот же угол.
Код
function phase_adj()
fsampl = 1000;      % частота дискретизации, кГц
freq = 41;          % Частота гармонического тона, кГц
len_buf = 4096;     % длина буфера, отсчёты
gap = 0.35;          % интервал между кусками, мс, не более 8
ss_fact = 5;        % количество точек модели сигнала на 1 выборку АЦП

% Формируем опорную сетку для "реального" сигнала
tick = ss_fact*len_buf;

% Формируем модель "реального" сигнала с разрешением бОльшим, чем выборка АЦП
% (коряво: можно получить куски и аналитически, но это для сравнения спектров)
signal = sin(2*pi*(0:4*tick)*freq/(ss_fact*fsampl)) + (1e-2)*randn(1, 4*tick+1) +...
    0.02*sin(2*pi*(0:4*tick)*(freq+0.5)/(ss_fact*fsampl)) +...
    0.02*sin(2*pi*(0:4*tick)*(freq-0.5)/(ss_fact*fsampl));

% Заполняем буферы
buffer_1 = signal(1:ss_fact:tick);
sampl_gap = floor(1e6*ss_fact*gap/fsampl);
buffer_2 = signal(tick+1+sampl_gap:ss_fact:tick+sampl_gap+tick);

% Пытаемся склеить без учёта фазовых соотношений
sum_buf_1 = [buffer_1, buffer_2];

% Делаем оценку спектров кусков и "реального" сигнала, используя спектральные окна
specw_1 = fft(chebwin(len_buf, 60)'.*buffer_1);
specw_2 = fft(chebwin(len_buf, 60)'.*buffer_2);
sp_sig =  fft(chebwin(2*len_buf, 60)'.*signal(1:ss_fact:2*tick));

% Находим положение максимума модуля спектральной функции
[max_1, frq_1] = max(abs(specw_1));

% Находим фазы основного тона в кусках
ang_1 = angle(specw_1(frq_1));
ang_2 = angle(specw_2(frq_1));

% Находим разность фаз с учётом набега за кусок
diff = ang_1-ang_2;
dif_ang = mod(diff+2*pi*len_buf*freq/fsampl, 2*pi);

% Находим временнУю задержку, соответствующую разности фаз
tau = dif_ang/(2*pi*freq);

% Находим величину сдвига в отсчётах сигнала
shift = round(tau*fsampl);

% Сдвигаем 2-й кусок для слияния фаз
tmp_buff = buffer_2(shift+1:end); % весьма грубо, но пока что сойдёт

% Kоличество отсчётов на период (грубо)
period = round(fsampl/freq);

% Дописываем "хвост"
tmp_buff = [tmp_buff, tmp_buff(end-period+1:end-period+shift)]; % пуркуа бы и не па?

% Склеиваем
sum_buf_2 = [buffer_1, tmp_buff];

% Находим модуль спектра склейки
sp_sum_2 = fft(chebwin(2*len_buf, 60)'.*sum_buf_2);

% Выводим результаты
bins = (0:len_buf-1)*fsampl/len_buf;

figure (1)
plot (1:100, buffer_1(1:100))
hold on
plot (1:100, buffer_2(1:100), 'r')
hold off
ylim([-1.5 1.5]);
grid on
title ('Signals')

figure (2)
plot ((4046:4146), sum_buf_1(4046:4146))
ylim([-1.5 1.5]);
grid on
title ('Glue 1')

figure (3)
plot ((4046:4146), sum_buf_2(4046:4146), 'Color', [0.9 0 0])
ylim([-1.5 1.5]);
grid on
title ('Glue 2')

figure (4)
semilogy (bins(1:1000), abs(specw_1(1:1000)))
ylim([0.1 1000]);
grid on
xlabel('Frequency, Hz')
title('Spectrum of short sequence')

figure (5)
semilogy (bins(1:1000)/2, abs(sp_sig(1:1000)), 'b')
hold on
semilogy (bins(1:1000)/2, abs(sp_sum_2(1:1000)), 'r')
hold off
ylim([0.1 1000]);
grid on
xlabel('Frequency, Hz')
legend('Real signal', 'Adjusted pieces')
title('Spectra of long sequences')
return;
Пояснение: сначала формируется сигнал с временнЫм разрешением 1/5 относительно частоты выборки (имитация "непрерывнрсти"), а затем из него формируются исходные последовательности, с учётом задержки между блоками (gap). Стыковка производится с точностью в +/- 0,5 длины отсчёта. Повысить её можно путём интерполяции.

Цитата(alexkok @ Aug 5 2008, 00:06) *
...Для всех прочих он работать не будет, т.к. они будут складываться с произвольными фазами.
Если есть возможность получать время начала каждой пачки с точностью до отсчёта, то можно вставить пустые (забитые нулями) промежутки и расфильтровать суммарную выборку...
Мне кажется, что измерять временнОй интервал с точностью до фазы основной гармоники вовсе и не нужно - требуется лишь получить погрешность не более ~ 1/(2*F ), где F - ширина интересующего диапазона.
Небольшие нестыковки фаз компонентов сигнала на результат качественно не повлияют; будет только небольшая неопределённость амплитуд и частот спектральных составляющих. Но разрешение как таковое будет увеличено кардинально.

Цитата(alexkok @ Aug 5 2008, 00:06) *
...Если же время начала получить невозможно, то можно лишь слегка улучшить разрешение если до БПФ вычесть из сигнала основную составляющую и фильтровать через БПФ только остаток.
Такой метод применяется при аналоговых измерениях чистоты спектра. Преимуществом при этом будет возможность применения более узкополосного окна или БПФ без окна вообще...
Да, это верно, но всё-таки не принципиально. Для подобных измерений подавление тестового сигнала обячно делается из-за недостаточной разрешающей способности аппаратуры по уровню (или, более правильно, недостаточного динамического диапазона).
Имея в распоряжении, скажем, АЦП со 120-130 дБ ДД, подавлять основную частоту, скорее всего, и не потребуется.
А при узкополосной фильтрации кусок сигнала просто "развалится" по причине большой добротности фильтра, и никакого выигрыша, скорее всего, не получится...

Цитата(alexkok @ Aug 5 2008, 00:06) *
...Если есть априорная информация об измеряемых составлящих - как правило это гармоники сети и частоты сравнения в синтезаторах, то можно ещё попытаться улучшить измерение, но не БПФом.
Совершенно верно, я об этом тоже думал.
Если сигнал имеет какие-либо устойчивые артефакты помимо основного тона, делу разрешения неодозначностей это может сильно помочь, и даже без измерения интервала времени вообще - экстремальный подход к проблеме. Однако, они должны лежать заметно выше шумового фона.
Более того, уместно было бы ещё хотя б один пилотный тон известной частоты во входной сигнал добавить. Я бы, пожалуй, выбрал эту частоту в районе 100-500Гц.
Однако, и простейший счётчик интервалов времени, думается, работать будет очень хорошо. Попробую ввести в модель пожже.

Собственно, ПФ не является чем-то необходимым. Требуемые преобразования можно осуществить целиком и во временнОй области (методами регрессии, например), которые ничем не хуже ДПФ.

Вот картинки. Хорошо видно, что боковые лепестки (+/- 0,5 кГц) в склейке разрешаются так же хорошо, как и в исходном сигнале, при условии, что последний анализируется на двойной длине куска. В то время, как на куске одинарной длины "боковушки" не разрешаются вообще.
Алгоритм работает практически с любыми настройками, но, ввиду грубости стыковки кусков, частоту "высокой" делать не стОит.


Нажмите для просмотра прикрепленного файлаНажмите для просмотра прикрепленного файла
alexkok
Цитата(Stanislav @ Aug 5 2008, 01:36) *
Это основное ограничение, никуда не деться. Однако, остальное можно и нужно считать шумом, а как мы выяснили, он эргодичен. smile.gif

Повышать разрешение для шума бессмыссленно, можно просто пересчитать к другой полосе.
Разрешение нужно чтобы вытащить из под шума паразитные составляющие спектра.
Если их "размазать" несинфазным сложением то использование нескольких пачек теряет смысл.
Цитата
Но разрешение как таковое будет увеличено кардинально.

Разрешение для каких составляющих?
Для основной гармоники оно не нужно, а паразитные уже размазаны.
Цитата
Да, это верно, но всё-таки не принципиально. Для подобных измерений подавление тестового сигнала обячно делается из-за недостаточной разрешающей способности аппаратуры по уровню (или, более правильно, недостаточного динамического диапазона).
Имея в распоряжении, скажем, АЦП со 120-130 дБ ДД, подавлять основную частоту, скорее всего, и не потребуется.
А при узкополосной фильтрации кусок сигнала просто "развалится" по причине большой добротности фильтра, и никакого выигрыша, скорее всего, не получится...

При ДД 120-130дБ нужно использовать окно с соответствующим уровнем боковиков, а это означает расширение полосы фильтров БПФ где-то в два раза по сравнению с БПФ без окна но с высоким уровнем боковиков.
Если сжать ДД за счёт вычитания главной гармоники, можно использовать окно с относительно высоким уровнем боковиков но более узкополосное и получить более высокое разрешение.
Stanislav
Цитата(alexkok @ Aug 5 2008, 05:05) *
Повышать разрешение для шума бессмыссленно, можно просто пересчитать к другой полосе.
Разрешение нужно чтобы вытащить из под шума паразитные составляющие спектра...
Совершенно так. Мне тоже это подумалось с самого начала темы. Например, паразитные моды колебаний кварца, или спуры синтезатора частоты.


Цитата(alexkok @ Aug 5 2008, 05:05) *
...Если их "размазать" несинфазным сложением то использование нескольких пачек теряет смысл.
Конечно. Поэтому и "тужимся". smile.gif

Цитата(alexkok @ Aug 5 2008, 05:05) *
...Разрешение для каких составляющих?
Для основной гармоники оно не нужно, а паразитные уже размазаны.
Как это размазаны? Посмотрите на картинки - где же Вы видите "размазню"?
Кроме того, как я и писал уже, для одиночного тона понятие разрешения не имеет смысла.

Цитата(alexkok @ Aug 5 2008, 05:05) *
...При ДД 120-130дБ нужно использовать окно с соответствующим уровнем боковиков, а это означает расширение полосы фильтров БПФ где-то в два раза по сравнению с БПФ без окна но с высоким уровнем боковиков.
Если сжать ДД за счёт вычитания главной гармоники, можно использовать окно с относительно высоким уровнем боковиков но более узкополосное и получить более высокое разрешение.
Ага, понятно. Действительно, для относительно коротких окон вычитание основной частоты будет полезным - исчезнет эффект "маскирования" слабых составляющих спектра мощным основным тоном.
Здесь, видимо, такой фокус тоже можно проделать, после склейки уже. Разрешение как по уровню, так и по частоте вблизи основного тона это должно увеличить.

ЗЫ. Сегодня вечером попробую поработать с реальным сигналом из файлов. Однако, там засада - интервал даже приблизительно не известен.
ЗЗЫ. Кстати, БПФ вообще без окна не бывает...
alexkok
Цитата(EKirshin @ Aug 3 2008, 10:10) *
Да, действительно, 1 Мгц. А что не так?
Да, именно это и интересно. Вообще хотелось получать выборку в, скажем, 65536 точек, строить большой спектр и смореть с разрешением порядка 15-20 Гц. Но аппаратные средства не позволяют. Поэтому ищем путь сделать нечто из различных кусков сигнала.
Да, действительно. Указанные 100db - это, пожалуй, максимум. А данные две реализации - лишь пример.

Если аппаратура Ваша и интересует полоса всего 10кГц то достаточно пропустить сигнал через полосовой фильтр и проредить отсчеты перед заполнением буфера.
и Вы получите 10Гц разрешение.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.