как с помощью бпф - fft Считать нужный сигнал (Например 50грц) и подать сигнал (Например на Светодиод).

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

b707 пишет:

Сорри, что прошу - у меня просто под рукой нет готового аппарата БПФ, а у тебя вроде есть :) Если нет - ничего, я тогда сам потом попробую...

Прости занудство, но что значит "нет"?

https://octave-online.net/

войти можно с гугл аккаунтом просто. Там вот вообще всё есть ;)))))

21 век на дворе, почти все инструменты есть бесплатно и в онлайне. Матлаб онлайн тоже есть, но просит номер лиценции ;)))))))

nik182
Offline
Зарегистрирован: 04.05.2015

У меня много разных реализаций БПФ. Могу посчитать предоставленные Вами данные.  Но я уже вижу Ваши заблуждения. Нет разницы сколько периодов оцифровывать. Один или 10. Результат будет одинаковый. Разница есть в выборе частоты оцифровки. Лучшие результаты анализа получаются, когда исследуемая частота исходного сигнала имеет не имеет оцифровку не менее 10 точек точек на период. Но к заданному мной вопросу это не имеет никакого отношения. Я не знаю математического метода сделать гетеродин для перекидывания частоты по спектру с сохранением энергетических соотношений в полученном сигнале. Никогда не сталкивался. Смутно представляю что надо сделать как физический - перемножить два сигнала и фильтром выделить необходимую полосу. Может кто делал и подскажет?  

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

wdrakula пишет:
Ты же в доказательство приводишь аргументы, которые не зависят от ограниченности интегрирования и подошли бы к обычному ПФ.
Не придирайся, там в посте #7 как раз в этом абзаце говорится о ПФ (правда один раз написано именно ПФ, как и надо, а другой раз - БПФ по запарке). Не придирайся. 

nik182
Offline
Зарегистрирован: 04.05.2015

Ну собственно получилось как то.  Произведение и ФНЧ - красная кривая. Но всё равно, БПФ от нуля. Никаких базовых и прочих частот.

b707
Offline
Зарегистрирован: 26.05.2017

nik182 пишет:

Ну собственно получилось как то.

Ок, спасибо.

Давайте это пока отложим, я должен подготовится. Эта проблема явно имеет решение, я разберусь и напишу

Logik
Offline
Зарегистрирован: 05.08.2014

ТС скорей всего уже и забыл что у него чесалось (да и не осилил бы он скорей всего), но на всяк случай проясню. БПФ для выявления одной известной частоты - дурная идея. Типичное для одной частоты - ДПФ, его суть в #29 изложили. Если есть набор фиксированых частот - алгоритм Герцеля. Его как правило для ДТМФ расписывают, но работает и для других наборов, причем рвет БПФ как тузик грелку. Хотя вообщем то все это на одной идее держится, но затраты и результат разные.

Про зеркальные частоты- да, есть проблема. Как правило её решают до БПФ и/или до оцифровки сигнала. Потому для некоторых их уже нет и они с ними не сталкиваются ))) 

Про комплексную составляющую на входе - да, пишем нули в мнимую, где же её взять то! Про теоретическое обоснование. Пишу для тех у кого не вызывает вопроса "почему" утверждение что гармонический сигнал - это вращающийся на комплексной плоскости вектор и он же  - это комплексное число умножаемое через дискрет на комплекс по модулю равный 1, что эквивалентно повороту вектора на некоторый угол. Остальные могут не читать. В БПФ нет шаманства, "на пальцах" это так. Каждый отсчет (как комплекс, даже если мнимая равна 0)  поворачивается на некоторый угол Fi. следующий по времени отсчет - на 2*Fi, затем на 3*Fi и т.д. Это соответствует вращению вектора. Если это вращение с частотой равной частоте сигнала, но в противоположную сторону то вектор становится неподвижным и последующие суммирования накапливают его составляющие и модуль в целом. На выходе этот модуль и дает результат. То что сразу проводим работу не с одной частотой а целой гребенкой, что доворот на 4*Fi можно делать одним умножением, а можно 4 раза на Fi или 2 раза на 2*Fi - подробности.  В БПФ все это продумано для минимизации умножений. В общем БПФ обрабатывает векторы с входа (ну если не соптимизировали конечно). Почему же тогда при 0 в мнимой все нормально? Потому что действительная и мнимая части ортогональны. Хотя понятно, что при повороте вектора они перетекают друг в друга и даже меняются местами. Они как бы независимо дают свой вклад в результат - в модуль на выходе. И отсутствие одной из них - неприятно, но не проблема. Достаточно одной, хотя с двумя бы было лучше. В экселе кстати можно погонять и с мнимой частью на входе.

b707
Offline
Зарегистрирован: 26.05.2017

как обещал, немного почитал и проконсультировался у "старших товарищей".

Концепция работы с высокими частотами, о которой я писал выше  - скажем, с сигналом 400.05 МГц - когда вместо прямой обработки высокочастотного сигнала, например FFT на частотах в сотни МГц - из сигнала сначала "вычитается" базовая частота 400 МГц и вся дальнейшая обработка уже делается на радиочастотах уровня килогерц - в целом верная :)

Ошибкой было то, что, как я полагал, разделение частот происходит в цифровом виде - это не так. Разделение происходит аппаратно, в специальном устройстве, так называемом "частотном миксере" (смотри frequency-mixers) Насколько я понял, упоминавшийся nik182 гетеродин как раз является примером такого "миксера"

Тем не менее, все особенности разделения частот и возникающие проблемы, в частности "отражение частот" относительно базовой, то что я описал выше - все это остается в силе:

Morroc
Offline
Зарегистрирован: 24.10.2016

Нижняя граница частоты, где можно напрямую в цифре делать, потихоньку растет. Можно еще заворачивание спектра использовать на пользу т.к. полоса АЦП обычно шире, чем ограничение по частоте дискретизации и те, что используются для приема до 60 МГц (там все честно в цифре), видят сигналы и до 400МГц в том числе (похуже конечно), они не могут их честно оцифровать с нужной частотой, но для приема медленно модулированного сигнала это и не нужно - если полосовой фильтр на вход поставить и правильно расчитать на какую частоту попадет нужная нам при заворотах спектра, то можно запросто принимать так (но жрет это все на порядок больше, чем если аналоговым переносом сделать и обработать на низкой частоте).