Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вычитание гармоники из сигнла
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
ivan219
Есть гармоника частотой 62 Гц есть выборка 48000 сэмпла ДПФ на 48000 и FFT на 512 и частота дискретизации 48 кГц.

Суть вопроса вот вчём мне нужно из сигнала вычесть гармонику с частотой 62 Гц и зделать FFT на 512 в которой этой гармоники недолжно быть. Я вот что подумал если мы зделаем так: зделаем ДПФ 48000 на гармонику 62 Гц и определим её фазу и амплитуду после чего сгенерируем эту гармонику и из имеющихся 48000 сэмплов вычтем эту гармонику после чего зделаем FFT на 512 будет ли эта операция коректной? Или есть другое решения? Мне нужно максимально точное.

Затрата ресурсов не важна время тоже.
Lmx2315
..может я чего на понял ,
но по моему - надо сделать fft 512 точек , потом обнулить ненужную гармонику в результате , сделать обратное fft 512 точек , получим сигнал без вашей гармоники .

з.ы.

всегда думал что ДПФ и fft - одно и тоже, в смысле конечного результата.
ivan219
Цитата(Lmx2315 @ Sep 18 2010, 00:16) *
..может я чего на понял ,
но по моему - надо сделать fft 512 точек , потом обнулить ненужную гармонику в результате , сделать обратное fft 512 точек , получим сигнал без вашей гармоники .

з.ы.

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


Нет если у меня была бы кратная гармоника т.е. 48000 / 512 = 93,75 Гц то да метот подашол. Но гармоника не кратная а значит её спектр растекётся по всем 256 бинам.
И ДПФ это почти БПФ (FFT) гораздо медленне но позволяет вычислить любую гармонику кратную целому числу а не только двойке как в БПФ.
Serg76
Цитата(ivan219 @ Sep 17 2010, 22:27) *
Есть гармоника частотой 62 Гц есть выборка 48000 сэмпла ДПФ на 48000 и FFT на 512 и частота дискретизации 48 кГц.

Суть вопроса вот вчём мне нужно из сигнала вычесть гармонику с частотой 62 Гц и зделать FFT на 512 в которой этой гармоники недолжно быть. Я вот что подумал если мы зделаем так: зделаем ДПФ 48000 на гармонику 62 Гц и определим её фазу и амплитуду после чего сгенерируем эту гармонику и из имеющихся 48000 сэмплов вычтем эту гармонику после чего зделаем FFT на 512 будет ли эта операция коректной? Или есть другое решения? Мне нужно максимально точное.

Затрата ресурсов не важна время тоже.

Дааааааааа.... О какой специфике вопроса мы можем здесь говорить, если человек даже не знает, что такое знаки препинания. Про грамматику речи даже не идет. Ужас какой-то!!!!!!!! Не сочтите за грубость.
DRUID3
Цитата(Serg76 @ Sep 17 2010, 23:27) *
Дааааааааа.... О какой специфике вопроса мы можем здесь говорить, если человек даже не знает, что такое знаки препинания. Про грамматику речи даже не идет. Ужас какой-то!!!!!!!! Не сочтите за грубость.

biggrin.gif КаДДа нечего сказать по-теме - лучше промолчать... wink.gif
Serg76
Цитата(DRUID3 @ Sep 18 2010, 00:31) *
biggrin.gif КаДДа нечего сказать по-теме - лучше промолчать... wink.gif

Наверное, да
Oldring
Цитата(ivan219 @ Sep 17 2010, 23:27) *
Или есть другое решения? Мне нужно максимально точное.


Вычитать сгенерированную гармонику можно, если у вас 62Гц достаточно точно и стабильно в записанном окне. Но при этом нужно:

1. нужно предварительно, перед определением параметров 62 Гц вычесть из сигнала среднее;
2. воспользоваться подходящей оконной функцией;
3. Определить вклад 62 Гц точно алгоритмом Герцеля, а не при помощи FFT, так как 48 кГц не кратно 62 Гц.

Но в целом успех этого предприятия зависит от неописанных вами и поэтому неизвестных мне свойств сигнала и помехи.
sup-sup
Цитата(ivan219 @ Sep 17 2010, 22:27) *
Есть гармоника частотой 62 Гц есть выборка 48000 сэмпла ДПФ на 48000 и FFT на 512 и частота дискретизации 48 кГц.

Суть вопроса вот вчём мне нужно из сигнала вычесть гармонику с частотой 62 Гц и зделать FFT на 512 в которой этой гармоники недолжно быть. Я вот что подумал если мы зделаем так: зделаем ДПФ 48000 на гармонику 62 Гц и определим её фазу и амплитуду после чего сгенерируем эту гармонику и из имеющихся 48000 сэмплов вычтем эту гармонику после чего зделаем FFT на 512 будет ли эта операция коректной? Или есть другое решения? Мне нужно максимально точное.

Затрата ресурсов не важна время тоже.

А нельзя ли не обращать внимания на эту гармонику?
Если нельзя, я бы просто сделал FIR максимально возможной длины.

ivan219
Цитата(Oldring @ Sep 18 2010, 09:40) *
Вычитать сгенерированную гармонику можно, если у вас 62Гц достаточно точно и стабильно в записанном окне. Но при этом нужно:

1. нужно предварительно, перед определением параметров 62 Гц вычесть из сигнала среднее;
2. воспользоваться подходящей оконной функцией;
3. Определить вклад 62 Гц точно алгоритмом Герцеля, а не при помощи FFT, так как 48 кГц не кратно 62 Гц.

Но в целом успех этого предприятия зависит от неописанных вами и поэтому неизвестных мне свойств сигнала и помехи.

62Гц стабильно во всём окне. Среднее значение не подумал новерное правильно. А вот оконная функция зачем онаже исказить сигнал? А заместо алгоритма Герцеля ДПФ на 48000 выборок не подайдёт ведь ресурсы не важны??? И FFT я буду делать уже после того как 62 Гц будут убраны из сигнала.

Цитата(sup-sup @ Sep 18 2010, 10:13) *
А нельзя ли не обращать внимания на эту гармонику?
Если нельзя, я бы просто сделал FIR максимально возможной длины.

Думал но он вырежит определённую полосу. А надо только одну гармонику 62 Гц.
DRUID3
Цитата(ivan219 @ Sep 18 2010, 10:30) *
Думал но он вырежит определённую полосу. А надо только одну гармонику 62 Гц.

А она есть? Гармоника? Это абстракция, условность... Под гармоникой FFT всегда подразумевают ту или иную полосу... Бин DFT/FFT ничто иное как полосовой фильтр с sinc-образной АЧХ... ну если без окон...

Кстати 2-а соседних к 62 Hz бина в принципе можно так исказить, что они будут давить именно 62 Hz. Делаем режекторный фильтр на 62 Hz, имеем его передаточную характеристику... Делаем ее FFT... Смотрим получилось ли smile.gif - из-за влияния окон может быть хреновой реализацией...

P.S.: а уж если совсем абстрагироваться - то под гармоникой понимают ту или иную корреляцию с той или иной функцией wink.gif ...
petrov
Уидроу Б.,Стринз С.
Адаптивная обработка сигналов.
http://lord-n.narod.ru/walla.html#uidrouAOC

В этой книге рассказано как просто такую решить.
Oldring
Цитата(ivan219 @ Sep 18 2010, 11:30) *
62Гц стабильно во всём окне. Среднее значение не подумал новерное правильно. А вот оконная функция зачем онаже исказить сигнал? А заместо алгоритма Герцеля ДПФ на 48000 выборок не подайдёт ведь ресурсы не важны??? И FFT я буду делать уже после того как 62 Гц будут убраны из сигнала.


Потому что 48000 на 62 не делится. Оконная функция нужна только для определения параметров гармоники.
ivan219
Цитата(DRUID3 @ Sep 18 2010, 11:55) *
А она есть? Гармоника? Это абстракция, условность... Под гармоникой FFT всегда подразумевают ту или иную полосу... Бин DFT/FFT ничто иное как полосовой фильтр с sinc-образной АЧХ... ну если без окон...

Кстати 2-а соседних к 62 Hz бина в принципе можно так исказить, что они будут давить именно 62 Hz. Делаем режекторный фильтр на 62 Hz, имеем его передаточную характеристику... Делаем ее FFT... Смотрим получилось ли smile.gif - из-за влияния окон может быть хреновой реализацией...

P.S.: а уж если совсем абстрагироваться - то под гармоникой понимают ту или иную корреляцию с той или иной функцией wink.gif ...


Ну как это её може не быть я её же сам и синтезирую. Вот блин как всё сложно голова кругом cranky.gif

Цитата(petrov @ Sep 18 2010, 12:28) *
Уидроу Б.,Стринз С.
Адаптивная обработка сигналов.
http://lord-n.narod.ru/walla.html#uidrouAOC

В этой книге рассказано как просто такую решить.


Ага нашол адаптивный режекторный фильтр надо почитать, спасибо.

Цитата(Oldring @ Sep 18 2010, 13:06) *
Потому что 48000 на 62 не делится. Оконная функция нужна только для определения параметров гармоники.

Ну да зато на промежутке в 48000 семпла и частотой дискретизации 48 кГц укладывается целое количество колебаний с частотой 62 Гц по этому я и взял ДПФ 48000 окно длинной в секунду.
DRUID3
Цитата(ivan219 @ Sep 18 2010, 12:38) *
Ну как это её може не быть я её же сам и синтезирую.

А вот так smile.gif ...
sup-sup
Цитата(ivan219 @ Sep 18 2010, 10:30) *
Думал но он вырежит определённую полосу. А надо только одну гармонику 62 Гц.

При выборке ограниченной длины точность измерения (вырезания) частоты не будет лучше величины, обратной времени выборки. Максимальная точность (в центре выборки) будет при размере ядра FIR равной времени выборки.
SPACUM
Цитата(sup-sup @ Sep 18 2010, 13:54) *
При выборке ограниченной длины

А другие физические факторы. В жизни не бывает чистого синуса идеально синхронизированного с оцифровкой сигнала. Всегда есть небольшая амплитудная и частотная модуляция например из-за рыскания системы синхронизации. И мне очень хотелось бы иметь АЦП для оцифровки 62Гц имеющий хотя бы 22 честных бита при больших сигналах. Причем погрешность младших разрядов имеющихся в продаже не чистый белый шум, а величина сложным образом связанная с биениями сигнала и частоты оцифровки. А всякие расчеты основанные на том,что наши АЦП завтра будут выдавать результат в формате double лучше оставим потомкам и в запечатанной капсуле чтобы не видели нашего идиотизма. Я уже давно не моделирую ничего в Матлабе. При некотором опыте все идеи легче проверить на реальном процессоре, чем учесть все факторы при математическом моделировании.
А что касается поставленной задачи в жизни правильнее применить адаптивный метод постоянно подстраивающийся к мешающему фактору. А формально при идеальной синхронизации окна и идеальной синусоиде мешающего фактора метод предложенный автором несомненно наилучший, можно даже рассчитать эту гармонику один раз и вечно ее вычитать.
sup-sup
Цитата(SPACUM @ Sep 19 2010, 10:50) *
А другие физические факторы. В жизни не бывает чистого синуса идеально синхронизированного с оцифровкой сигнала. Всегда есть небольшая амплитудная и частотная модуляция например из-за рыскания системы синхронизации. И мне очень хотелось бы иметь АЦП для оцифровки 62Гц имеющий хотя бы 22 честных бита при больших сигналах. Причем погрешность младших разрядов имеющихся в продаже не чистый белый шум, а величина сложным образом связанная с биениями сигнала и частоты оцифровки. А всякие расчеты основанные на том,что наши АЦП завтра будут выдавать результат в формате double лучше оставим потомкам и в запечатанной капсуле чтобы не видели нашего идиотизма. Я уже давно не моделирую ничего в Матлабе. При некотором опыте все идеи легче проверить на реальном процессоре, чем учесть все факторы при математическом моделировании.
А что касается поставленной задачи в жизни правильнее применить адаптивный метод постоянно подстраивающийся к мешающему фактору. А формально при идеальной синхронизации окна и идеальной синусоиде мешающего фактора метод предложенный автором несомненно наилучший, можно даже рассчитать эту гармонику один раз и вечно ее вычитать.

Устранять неопределенность можно увеличением общей длины выборки. Ничего не стоит записать входной и выходной сигналы в канале связи и проанализировать их многократно и неторопливо. Можно узнать насколько портится эта самая гармоника 62 Гц и сделать вывод как ее устранить. Наверняка она получит модуляцию (об этом писали), а значит и размытый спектр. То есть, в чистом виде ее (гармоники) на выходе канала связи уже нет. Если часть этой модуляции не случайная, ее можно компенсировать. Но следы все равно останутся. А режекторный фильтр - достаточно простое и устойчивое решение (без обратных связей).
SPACUM
Цитата(sup-sup @ Sep 20 2010, 15:29) *
увеличением общей длины выборки.

Небольшое замечание. Если есть какая-то модуляция, то увеличение общей длины выборки приводит к размытию спектра. Чем больше бин занимает мешающий фактор тем хуже с ним бороться. Лучше уж адаптивно следить без всяких спектров.
Но вопрос был формальным: сам задал длину - довольно большую и сам задал помеху - абсолютно синхронную и не ограничил в ресурсах. Вопрос в правильной методике.
ivan219
Цитата(SPACUM @ Sep 20 2010, 22:03) *
Но вопрос был формальным

Здесь попросишь бумажку, а дадут томик война и мир, да ещё и вернуть скажут в целости и сохранности. А ты сидишь, читаешь, но в конце всё равно пальцем smile.gif
ivan219
Ну вот дошли руки и до эксперемента.
Сигнал синтезируется на ПК полезный сигнал и помеха. После чего они складываются и отправлястся на выход звуковой карты LinOut c LinOut сигнал поступает на LinIn и оцифровывается дальше делается ДПФ на частоту помехе она известна определяется амплитуда и фаза помехи синтезизуется сигнал помехи и из входного сигнала вычитается синтезируемый сигнал помехи (при вычитании среднего значения из сигнала результатов не заметил возможно они минимальны) после чего проделовалось FFT 1024 и получали чистый сигнал без помехи.
В приложении программа если есть навыки работы с паяльником можно посмотреть.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.