kote52, ну так лучше на ПК и проверять все, а когда уж заработает — переносить код на МК. Только МК, умеющий флоаты и имеющий математический сопроцессор, стоит ой как дорого. Иначе придется искать реализацию простого БПФ в целых числах. Но для спектрального анализа нет смысла БПФ применять: ведь фаза нам не нужна, соответственно, не нужны и комплексные числа. Для этого сгодится ДКП, а косинусы можно таблично вычислять.
Для произвольного некогерентного с отсчетами сигнала вычисление амплитуды спектральных составляющих (амплитудный спектр) требует вычисления обеих компонент - и синуса, и косинуса. Иначе амплитуду не вычислить. Для вычисления ДПФ или БПФ флоат вообще не нужен. Ну то есть можно конечно и с ним - дело вкуса, но совершенно не обязательно. Разрядность исходного массива 10...12 с большим запасом позволяет делать Фурье в целых числах на 32-х и даже 16-ти разрядном ядре. На восьми битах тоже можно, но будет заметно медленнее. Впрочем, автор желает сделать анализ спектра для вывода на индикацию, что очевидно на несколько порядков понижает требования к скорости обработки, числу бинов и разрядности результата. Так же не требуется никаких копроцессоров - ни для тригонометрии (элементарно используется таблица поворотных коэффициентов для БПФ или синусов/косинусов для ДПФ), ни для вычисления самой "бабочки". Действительно ускоряющим вычисления будет DSP-ядро в архитектуре, что означает либо полноценную WLIV, либо ее элементы, как это сделано в dsPIC33. Ну и не нужно искать ничего готового, если автор желает научиться это делать. Сложного там ничего нет. Сначала для понимания физики процесса нужно написать ДПФ на небольшое количество бинов, а потом будет сильно понятнее что такое БПФ.
Отнюдь. Зависит от задачи. Если нужно расфильтровать пару десятков бинов с относительно узкой полосой (анализируемый сигнал узкополосен), то БПФ там даром не нужен.
Последний раз редактировалось КРАМ Вс сен 18, 2022 07:18:38, всего редактировалось 1 раз.
1. Если стоит цель разобраться с ДПФ, то это лучше делать на компьютере. И про ресурсы думать не надо, и отлаживать удобнее. Если стоит цель в перспективе переехать на контроллер, то оптимизировать тоже лучше всего все еще на компьютере, после чего оптимизированный модуль перенести в прошивку МК.
2. ДПФ это всего лишь набор скалярных произведений сигнала на ряд гармонических функций. Почитайте про скалярное произведение функций, и многое станет понятно.
Какой еще одной выборки? Длина исходного массива во времени даст полосу фильтра (обратна ей) при прямоугольном окне анализа и несколько шире при окнах с подавлением боковых лепестков (Хэмминга, Блэкмана и других). Про частоту дискретизации вам уже сказали, но нужно учесть, что порядок антиалиасингового фильтра на входе АЦП прямо связан с расстоянием от сигнала до второй зоны Найквиста (половины частоты дискретизации). То есть количество отсчетов будет величиной вычисляемой и никак не может быть равно единице.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Не думаю. Речь шла о выборке, а не о бине. А вот желание оставить одну выборку для вычисления одного бина говорит о том, что человек: 1. Не понимает как вычисляют число отсчетов. 2. Не понял, что количество амплитудных спектров на выходе равно половине от числа отсчетов.
Речь шла о выборке, а не о бине. 1. Не понимает как вычисляют число отсчетов. 2. Не понял, что количество амплитудных спектров на выходе равно половине от числа отсчетов.
Мужики не обижайтесь, я много прочитал и пока винегрет в моей голове, если что то где то назвал не своим именем! А где то перечитал форум и там тоже люди не правильно изъясняются! 1.возможно не понимаю, в своём первом сообщение в этой теме на 8 странице я изложил как хотел бы настроить мк, отсюда и плясал бы. Поправьте меня если я не понял, 1 бин это к примеру 1024, кратно 2^n преобразования ацп. 2.второе узнал от вас здесь
Бин - это один фильтр, один частотный отсчет. Для получения одного бина в ДПФ нужно корректно полученый входной массив умножить на синус, проинтегрировать и нормировать к числу входных отсчетов, получив Имеджинери компоненту, а так же на косинус с теми же действиями, получив реал компоненту. Корень квадратный из суммы компонент даст модуль (амплитуду) сигнала в фильтре, ну а арктангенс отношения мнимой к действительной с отрицательным знаком даст фазу относительно базиса - тех самых синуса и косинуса на которые умножали входной массив. Размер массива во временной области, как я уже сказал, определит ширину фильтра в частотной области, а частота дискретизации должна удовлетворять теорему отсчетов. То есть произведение частоты дискретизации и длины входного массива во времени даст размер массива в количестве отсчетов. Сиречь, занимаемый этим массивом объем памяти.
Интересный термин "Бин". Ранее не встречал. Совсем отстал от терминологии новой. Хотя пока с Вуза не ушел, занимался параметрическими методами спектрального оценивания и за эволюцией терминов Фурьятины не следил.
прошу прощения - память моя подвела (этой темой 17 лет не занимался плотно), 1/1024 (исходя из N=1024) должно быть под синусом и косинусом.
Что то запутался, т. е. код был верным? И по поводу одной выборки что скажете?
Код почти правильный. Мое первое утверждение пока осталось - массивы реальной и мнимой части СПМ следует изначально обнулить. И вторую часть СПМ (k>=N/2) следует просто скопировать из первой и не считать зря. Кстати вспомнил откуда симметрия. Это ТФКП (теория функции комплексных переменных). Поскольку исходные данные для преобразования Фурье. были вещественные, то реальная часть СПМ есть функция четная относительно 0 частот, а мнимая нечетная. А ноль частоты ДПФ это, как не парадоксально, это k=0 и k=1024 при Вашей длины выборки 1024. Real[1024-k]=Real[k] Im[1024-k]=(-1)*im[k] Извините, если мозги терминами зря забиваю. Вы скажите и я больше не буду.
Естественно, на выходе компаратора мы получим ряд нулей и единиц. Но вся частотная информация сохранится, анализируем. Кто помнит, был такой определитель номера советского стандарта, так вот, там на входе стоял компаратор 554СА3!
Дак чтобы определить частоту сигнала - достаточно компаратора по порогу срабатывания. А чтобы определить амплитуду сигнала любой частоты, нужна цепочка из нескольких таких компараторов, да побольше цепочка, побольше. И такая цепочка называется АЦП - число сработавших компараторов в цепочке пропорционально значению напряжения на входе цепочки. FFT, он же в конечном счете нужен для измерения уровня сигнала в каждой частотной полосе, а не для определения наличия какой-то частоты.
Добавлено after 13 minutes 51 second: Что значит определить частоту? Это значит сказать что амплитуда этой частоты (или Бин в БПФ, что тоже самое) превышает какой то порог по сравнению с другими. Этот порог все равно будете определять в попугаях.
БПФ, а равно ДПФ, и детектирование двухтонального сигнала АОН - это "две большие разницы и каждая из них разная"(с)... Пороги никакого отношения к преобразованию Фурье не имеют. А само это преобразование линейно. На выходе получаются значения, в общем случае, модуля и фазы по каждому фильтру. Где модуль - это амплитуда гармонической составляющей. Попугайность модуля определяется попугайностью значений с АЦП. То есть легко пребразуется в физические значения.
Если проводить БПФ с реальным сигналом, ни одного бина с нулевой амплитудой вы не получите, проверено практикой, так что принимать решение вам придется все равно по какому то пороговому значению.
А аналоговый компаратор - это 2-х разрядный АЦП, это так, кому интересно.
Даладна!!!! И где же вы там второй разряд обнаружили? Для двух разрядов нужно две сигнальных линии и на выходе получим ЧЕТЫРЕ возможных значения. Ну или одну serial, которая уже любое количество разрядов осилит. Компаратор сам по себе - ни разу не сигма-дельта модулятор, есличо. Однобитный параллельный АЦП - это 6 дБ динамического диапазона. Для детектирования двухчастотного и равноамплитудного сигнала в отсутствии сравнимых с ним помех достаточно. Сделать нормальную фильтрацию общего применения - нет.
А для тех, кто на бронепоезде, еще фрагмент программы на AVR. Выделяем ответ АТС с телефонной линии, 500Гц. Сигнал после компаратора, есть и порог: переменная Limit.
#define BMM 1024 //Big Magic Multiplier для выхода в область целых чисел #define Limit 50 //порог срабатывания
while(1)//вечный цикл { #asm("sleep")//засыпаем и //ждем прерывание от таймера PORTB.0=1;//выход на осциллограф для контроля времени if(ACSR&(1<<ACO))//сигнал с компаратора x=BMM; else x=-BMM;
if(y>Limit)//если больше порога - есть сигнал! PORTB.1=1;//зажечь светодиод else PORTB.1=0;//погасить светодиод
PORTB.0=0;//выход на осциллограф для контроля }
Добавлено after 16 minutes 50 seconds: [uquote="КРАМ"] Это чушь. Вы просто ничего не понимаете в преобразовании Фурье. Все зависит от разрядности и реального входного спектра. [/uquote] Вот почему я не люблю заходить на русскоязычные форумы, не разобравшись, начинают ярлыки вешать и заставляют защищаться по типу: "Ты сам дурак".
Последний раз редактировалось Jurabay Сб дек 03, 2022 11:19:21, всего редактировалось 1 раз.
Сейчас этот форум просматривают: pasha71 и гости: 39
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения