Перейти к содержанию
    

Спектральный анализ Фурье

1 hour ago, Xenia said:

дело не в контроллере, а в презрении к начинающим :).

Позвольте с Вами категорически не согласиться. Дело не в железе вообще. И не в компетенциях. Дело исключительно в поверхностном подходе из-за применения СРЕДЫ в которой работает написанная программа.  Ардуино - это способ заинтересовать дилетантов во встраиваемых устройствах для их потребления в ином ремесле без привлечения специалистов-эмбеддеров. В этом смысле ПЛК ничем от Ардуин не отличаются, если не считать нормативы, которые делают из ПЛК строгий промышленный стандарт.

Но использование Ардуин в серийных устройствах чаще всего есть следствие несерьезного отношение к разработке, а значит и к целевому потребителю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 часов назад, my504 сказал:

Никакой корреляции там нет.

Вы там ни разу не были чтоле ?

Цитата

В Маках работают в основном студенты, ибо платят там сущие гроши. В нежном возрасте довольно трудно сломать обмен, если только нет патологической генетики.

Всеже зайдите и посмотрите. Задача непроста, но видимо таки решена.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 minutes ago, a123-flex said:

Вы там ни разу не были чтоле ?

Раз написал возражение, значит был. И не один раз. Последний раз - вчера. Перед премьерой "Шутников" в Сатириконе. Слишком рано пришли с женой. )))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, my504 сказал:

Позвольте с Вами категорически не согласиться. Дело не в железе вообще. И не в компетенциях. Дело исключительно в поверхностном подходе из-за применения СРЕДЫ в которой работает написанная программа.  Ардуино - это способ заинтересовать дилетантов во встраиваемых устройствах для их потребления в ином ремесле без привлечения специалистов-эмбеддеров. В этом смысле ПЛК ничем от Ардуин не отличаются, если не считать нормативы, которые делают из ПЛК строгий промышленный стандарт.

Но использование Ардуин в серийных устройствах чаще всего есть следствие несерьезного отношение к разработке, а значит и к целевому потребителю.

Однако "поверхностный подход" чаще всего возникает не из-за нерадивости, а по причине объективной трудности - под эту поверхность тяжело погружаться.

 

Вот совсем недавно один "специалист-эмбеддер" сказал, что мой STM32H7 - дерьмо, а нужно работать на AM335x и даже плату мне на нем рекомендовал. Мне от этого стало очень обидно :), т.к. плату на STM32H7 я себе только что в подарок на Новый год купила (но почта из Китая ее только на днях донесла). Вот я тогда и спрашиваю его ехидно: я на своем STM32H7 поморгать светодиодиком могу, а вы на своем AM335x можете? На что он мне ответил, что тоже может, только перед этим поставит на этот процессор Linux. Очевидно, что это ровно та же ситуация, что с Arduino, когда процессор слишком сложен для конкретного человека, чтобы писать под него нативный код, а потому ему приходится прибегать к посредничеству операционной системы, нивелирующей родовые особенности процессоров за типовыми командами. Вот и платформа Arduino, в общем-то, тоже аналогичная платформа для тех, кому программировать ATmega напрямую сложно.

 

Конечно ATmega гораздо проще по архитектуре, чем AM335x, тем не менее, наблюдается единство подходов из-за того, что профессионализм не успевает угнаться за прогрессом в области процессоро-строения. И чем дальше, тем пуще. Не думаю, что кто-то из "специалистов-эмбеддеров" способен написать прошивку для мобильного телефона с нуля - надорвется. Тем более что эмбеддера в общем-то не стоит считать профессиональным программистом, хотя программировать он умеет :). В итоге события развиваются в ту сторону, где разница между ардуинщиками и линуксоидами сглаживается - по мере усложнения МК прямые навыки работы с железом первые так и не получат, а вторые скоро утеряют.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

42 minutes ago, Xenia said:

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

Мобильный телефон, несмотря на компактность схемотехники, реализует МНОЖЕСТВО встраиваемых систем. Часть из них требует эмбеддерского подхода, часть прикладного программирования, а часть - системного. По своему опыту могу сказать, что для устройств с узко заточенным назначением (измерители физических величин, компактные радары, узлы автоматики и т.п.) разработка с использованием отдельно программиста, отдельно схемотехника приводит к неудовлетворительным результатам. Только самый общий алгоритм может быть сторонним.

Про Ардуино. То, о чем Вы сказали в выше расположенном сообщении, относится к железу. Но Ардуино не имеет отношения к железу. Вообще никакого отношения. Ардуино - это абстракция среды, которая изолирует пользователя от 90% сущностей, которые функционируют в железе. Это попытка научить косноязычного перца писать высокохудожественную прозу посредством генератора неких текстов. В вынужденных условиях реализации неких сырых идей Ардуино является годным инструментом. Когда его ставят в серийное изделие, это означает профессиональную беспомощность всей цепочки R&D.

ЗЫ. Ксения, я читаю Ваши пикировки на Сахаре. И все же почему то уверен, что 99, 99(9)% сарказма в Ваш адрес носят характер флирта, а совсем не издевательств над Вашей ранимой натурой)))) И поэтому я настолько же уверен, что Ваши реакции  на якобы сарказм - кокетство.

ЗЗЫ. Прошу не пропустить мое крайнее сообщение по существу темы... )))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

53 минуты назад, my504 сказал:

И поэтому я настолько же уверен, что Ваши реакции  на якобы сарказм - кокетство.

Конечно же на счет нанесенной мне обиды я пошутила и даже смайлик в том месте поставила, чтобы это отметить. Тем не менее, STM32H7 и в самом деле подошел бы к этой задаче лучше, чем Ардуино, поскольку высокая тактовая частота (400 МГц), наличие DSP-инструкций и библиотечных функций для прямого и обратного rfft, на них реализованных, делают плату на этом контроллере весьма перспективной, тем более что китайцы ее продают всего за 1000 рублей - https://aliexpress.ru/item/4000300005466.html. Присоединяешь ее проводком к USB-порту компьютера и больше ничего не надо - через него и чип программируется и данные с высокой скоростью скачивать можно.

 

Тем более что на контроллерах подобного класса уже выпустили ... Arduino!

https://www.cnx-software.com/2020/01/08/arduino-portenta-h7-stm32h7-cortex-m7-m4-industrial-board-runs-arduino-code-python-and-javascript/

То бишь там стоит двухядерный (!) STM32H747XI Cortex-M7/M4. У которого ядро M7 работает на тактовой частоте 480 МГц, а ядро M4 - на 200 МГц. Зверь, а не Ардуино! :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, Xenia said:

На что он мне ответил, что тоже может, только перед этим поставит на этот процессор Linux.

зачем вы врете? Я писал о Starterware - которая есть самый что ни на есть голый метал. И моргать светодиодом на АМ3352 проще, чем на H7. B Н7 я дерьмом не называл, у меня есть плата и на H7 и кучка на F7. Всему - свое. Но для сложного GUI она не шибко подходит - процессор слишком дорогой при мизерном ОЗУ для таких задач

2 hours ago, Xenia said:

один "специалист-эмбеддер" сказал,

один "модератор" просто врет.

1 hour ago, Xenia said:

тем более что китайцы ее продают всего за 1000 рублей - https://aliexpress.ru/item/4000300005466.html.

за 1300. На старой ревизии чипа, считай что ES

1 hour ago, Xenia said:

библиотечных функций для прямого и обратного rfft,

NE10 библиотека портирована под все АРМы, включая этот M7 и зуб даю уделает поделия которые "включены" очень значительно. 

 

На левой половине специально выделил код ф-ции, которая дернет пином, можно со светодиодом, для "эмбеддеров" а можно и с моторчиком, для таких как вы "настоящих эмбеддеров"

Безымянный.png

Это обычная запись в регистр. *(volatile u32 *) addr = val;

Ничего там сверхестветвенного нет, в отличии от HAL STM - вот там точно крыша съедет структуру заполнить, отослать, а когда все заглючит выяснить, что они в своем HAL еще и флаги занятости ставят, нужные для работы под OS - но ненужные для начинающих

 

И вот мои STM - и H7 и M7 и M4 - по вашему я гавно коллекционирую ??

А в соседнем топике DSP отписался, что делал на H7, вы не поверите, именно fft\ifft. Только захлебнулся он на графике, а совсем не на DSP. И не потому что слабый, а потому что мало памяти. А ставить внешнюю - а зачем, если на Али платка с A7 1.5 ghz + 32 Мб ДДР2 в одном чипе стоит 700 р и имеет сразу разьем на RGB дисплей? (Lechee Pi Zero). Только из непонятного страха к А серии? Это фобии непродуктивные 

 

А вот эта штука всего за 2 тыщи имеет на борту 512 мегабайт памяти и 1ГГЦ проц. И скажите, чем STM32H7 интереснее ее будет

 

ыыы.jpg

PocketBeagle_SizeCompare-medium.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, Xenia said:

контроллерах подобного класса

Общего чрезвычайно мало. По причине отличия программирования двух ядер вместо одного. Это отличие гораздо больше, чем софтить под PIC16 vs Cortex A76 к примеру.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 часов назад, DASM сказал:

зачем вы врете? Я писал о Starterware - которая есть самый что ни на есть голый метал. И моргать светодиодом на АМ3352 проще, чем на H7. B Н7 я дерьмом не называл, у меня есть плата и на H7 и кучка на F7. Всему - свое. Но для сложного GUI она не шибко подходит - процессор слишком дорогой при мизерном ОЗУ для таких задач

Все совпадения в моем рассказе случайны, ни один эмбеддер не пострадал :). Не надо так нервничать, поскольку в своем рассказе я не упоминала ни о вас, ни о месте, где это случилось. А если где-то и преувеличила, то для большего драмматического эффекта :), т.к. и не собиралась достигать фамильного сходства с вами.

 

Суть мною сказанного и рассказа, который мою мысль демонстрировал, сводилась у тому, что побуждение профессионального  эмбеддера поставить на свой контроллер Linux в точности той же природы, как и побуждение новичка использовать Arduino. Ибо то и другое есть прослойка между человеком и процессором. В этом смысле Arduino выглядит уже не как плата с Мегой, а как язык высокого уровня, позволяющий абстрагироваться от особенностей конкретного процессора и окружающей его периферии. Т.е. недостатки платформы Arduino ровно того же рода, как и у прочих языков высокого уровня - они отдаляются от "железа" и потому всё меньше годятся для описания работы системного уровня. Но это не значит, что языки высокого уровня ненужны.

 

Причем, платформа Arduino шагает в ногу со временем :), т.к. ныне языки программирования не столько модернизируются синтаксически, сколько обрастают специализированными библиотеками. Одна лишь библиотека std в C++ чего стоит :). Причем написанная столь запутанно и в таком стиле, что мало кто захочет разобраться, как работают ее функции. Подобная практика приучать пользоваться готовыми функциями во всех случаях жизни всё ширится. Знаю многих, кто никогда не разбирался с тем, как работает UART или SPI, а однажды достав подходящую библиотеку, постоянно ею пользуются для ввода-вывода. Вот и CubeMX тоже можно причислить к средствам того же типа, поскольку возможности контроллера там обернуты с специфические функции, сродни библиотечным. Вот и Arduino поступает точно так же, предложив пользователю набор "кубиков", которые по свой сути являются библиотечными функциями. Причем их роль подобна роли драйверов в большой операционной системе, когда программист не изучает протоколы связи с принтером или видеокартой, а пользуется стандартизованными обращениями к драйверам устройств. Ровно так же сделано и на платформе Arduino, где коммуникационные функции всегда выглядят одинаково, хотя реализуемые на нижнем уровне по-разному, в зависимости от  выбранного МК. Т.е. arduino-скетч остается в основном неизменным при переходе с AVR-контроллера на ARM и обратно. Именно для этой цели он и был заточен. Причем, Linux выполняет ровно ту же задачу!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 minutes ago, Xenia said:

побуждение профессионального  эмбеддера

Ксения, так что там с окном в частотной области? Вы вероятно пропустили мой последний комментарий по теме, прочитав только последний оффтоп.

Не складываются у меня Ваши аргументы. Не складываются и все тут... ))))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почитайте об алгоритме быстрой свёртки, там как раз выполняется наложение окна в частотной области.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

my504

Какое вообще может быть окно в частотной области, если весь набор фильтров ОБЯЗАН реализовывать строго горизонтальную АЧХ?

Это обширная тема, ищется по ключевым словам perfect reconstruction.

И зачем применять окно для эквалайзера, кроме заданной этим эквалайзером АЧХ, при обработке выходного спектра перед обратным Фурье?

Блочное ДПФ = банк полосовых КИХ фильтров с децимацией. Если банк фильтров без децимации, то просто складываем выходы фильтров для восстановления сигнала. После децимации необходимо интерполировать выходы фильтров перед сложением, т. к. добавление нулей порождает нежелательные образы в спектре, для подавления которых нужен синтезирующий банк полосовых фильтров, окно ПОСЛЕ обратного Фурье - огибающая импульсных характеристик синтезирующего банка фильтров.

filter_bank_structure.png.ca3c07d032db40f18244800c67a34a22.png

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 19.01.2020 в 20:39, my504 сказал:

У каждого фильтра при прямоугольном окне будут боковые лепестки, которые будут видны как паразитное пролезание монохромного сигнала в соседние бины. Итак, вопросы:

Каким таким "частотным окном" мы сможем удалить такое пролезание?

Какое вообще может быть окно в частотной области, если весь набор фильтров ОБЯЗАН реализовывать строго горизонтальную АЧХ?

И зачем применять окно для эквалайзера, кроме заданной этим эквалайзером АЧХ, при обработке выходного спектра перед обратным Фурье?

Боковые лепестки в частотной области могут быть удалены практически любым фильтром в ЧАСТОТНОЙ области. Ибо в этой области под окном подразумевается "масштабирующая маска", накладываемая на спектр. Те частоты, которые эта маска задавит до нуля, исчезнут из спектра совсем! По своей сути это передаточная функция. Эту "масштабирующая маску" обычно называют фильтром, если она имеет вид наклонной кривой, проходящей через весь спектр (ФНЧ или ФВЧ в зависимости от стороны наклона). А в тех случаях, когда эта маска вырезает ограниченную область частот, отсекая всё то, что находится за ее границами, обычно называют окном. Но это по смыслу совсем не то скользящее окно, которым пользуются в действительной области, т.к. в частной области оно не скользит по спектру, а однократно  масштабирует все его частоты. Однако сходство слов ("окно" и "окно") в обоих случаях создает почву для непонимания, порождая паразитные ассоциации.

 

Отчего собственно возникают боковые лепестки? (риторический вопрос) А главном образом из-за того, что скользящее по действительной части окно слишком узкое! Скажем, применили окно шириной в  11 точек - вот и получаете боковые лепестки, отрастающие о корня с периодом, равным этим 11-ти точкам на шкале времени. У многоразрядных сигма-дельта АЦП такая же болезнь -  ради уменьшения уровня шума в них встраивают фильтры каких-то порядков, которые учитывают 2-4 предыдущих измерения. Из-за это боковые лепестки не преминут появиться. А длинным окном фильтровать накладно - слишком много вычислений. Вот и пользуются паллиативными решениями виде форм, предложенных Ханном, Хэмингом, Кайзером и др., которые имеют ограниченную ширину в действительной области, порождая боковые лепестки, с которыми еще можно мириться.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 hours ago, Xenia said:

Боковые лепестки в частотной области могут быть удалены практически любым фильтром в ЧАСТОТНОЙ области. Ибо в этой области под окном подразумевается "масштабирующая маска", накладываемая на спектр. Те частоты, которые эта маска задавит до нуля, исчезнут из спектра совсем!

Это глубоко ошибочная сентенция, Ксения. Боковые лепестки на модуле дискретного Фурье - это РЕАЛЬНЫЙ СПЕКТР СИГНАЛА прошедшего оконную обработку ВО ВРЕМЕННОЙ ОБЛАСТИ. Вы же не будете отрицать тот факт, что сам по себе кольцевой буфер стоЯщий на выходе АЦП является амплитудным модулятором, перемножая сигнал на строго прямоугольный импульс единичной амплитуды с длительностью равной длине окна? Полагаю, что нет. Поэтому уже с момента захвата окна спектр сигнала перестает быть условно монохромным, рассыпаясь на те самые боковые лепестки. Эти боковые лепестки приводят к тому, что сигнал у которого частота отстроена от центральной на максимум одного из боковых лепестков спокойно будет принят "как родной". И никакими частотными окнами мы этот факт не вылечим. ЭТО ПРОСТО ПАРАЗИТНЫЙ КАНАЛ прохождения сигнала. Ровно так же невозможно подавить зеркальную частоту в супергетеродине манипулируя АЧХ ФСС в УПЧ (если Вам нравится приводить такие аналогии).

9 hours ago, Xenia said:

Строго горизонтальная АЧХ нужна в сфере звуковоспроизведения, где важно, чтобы не было завалов. Но в данной теме цель иная - выделить из общего спектра относительно узкие полосы и оценить долю их вклада в интегральную мощность спектра..

Ксения, проблема любого понимания сущностей, на мой взгляд, кроется в тех самых абстракциях, которые мы используем, чтобы понять эти самые сущности. Такой вот порочный круг, выход из которого состоит в том, чтобы пользуясь абстракциями, ни на одну фемптосекунду не забывать о тех допущениях, которые мы сделали при этих самых абстракциях.

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

То, о чем говорили Вы, предлагая применить некое частотное окно при отказе от оптимального непрямоугольного окна во временной области, годится для того, чтобы компромиссно сохранить спектр сигнала на фронтах нарастания/спада его огибающей. И весьма плох для целей выделения самой несущей, ибо страдает плохой избирательностью по частоте.

Но самое главное в нашей дискуссии совсем не в этом. А в том, что Вы классифицировали условно "метод частотного окна" как более экономный в вычислительном плане, а дело совершенно не в экономии. Дело в сущности самой обработки. Это просто разные методы по целям, которые предстоит достичь автору вопроса. И тут я допускаю, что в этой конкретной прикладной задаче предложенное Вами решение может быть оптимальным ПО СУЩЕСТВУ.

 

ЗЫ. Резкий скачок в сторону. )))  Не может ли мне кто нибудь предложить калькулятор поворачивающих коэффициентов для БПФ? А лучше генератор графа БПФ при задании размера входного массива.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

43 минуты назад, my504 сказал:

Боковые лепестки на модуле дискретного Фурье - это РЕАЛЬНЫЙ СПЕКТР СИГНАЛА прошедшего оконную обработку ВО ВРЕМЕННОЙ ОБЛАСТИ.

А я-то что вам говорю? Что именно обработка узким окном во временной области и является их ПРИЧИНОЙ. Не курочьте сигнал во временной области, а обрабатывайте его В ЧАСТОТНОЙ ОБЛАСТИ - и не будет у вас никаких лепестков. Для того и Фурье применяют. А те, кому Фурье не под силу, вынуждены применять фильтрацию скользящим окном во временной области. И чем ýже то окно, тем крупнее паразитные лепестки появляются в частотном спектре после этой процедуры. Можете считать их Божьей карой за то, что во временной области окно применяли :).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...