Как стать автором
Обновить

Аудиокодек своими руками — это просто

Время на прочтение5 мин
Количество просмотров33K
актуальная редакция статьи на сайте Makeloft

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

Пора снять завесу, отворить дверцу и воочию взглянуть на таинственный алгоритм будоражащий умы и сердца, добро пожаловать на сеанс с разоблачением!


Читать дальше →

Бардак в идеальном мире. Часть 3

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров6.6K

В этой серии статей мы делаем видимыми и ощутимыми некоторые элементы теории хаоса. В предыдущих частях мы увидели каким образом рождается странный аттрактор в предельно простой гамильтоновой системе — шарике, прыгающем на подпружиненном столике. Эта система способна порождать и красивые картинки и не менее красивые объяснения этим картинкам. Сейчас мы внимательнее рассмотрим некоторые качественные и количественные характеристики странных аттракторов — показатели Ляпунова, спектральные характеристики, и корреляционную размерность.

Читать далее

Расчет биномиальных коэффициентов с использованием Фурье-преобразований

Время на прочтение4 мин
Количество просмотров22K
При решении задач комбинаторики часто возникает необходимость в расчете биномиальных коэффициентов. Бином Ньютона, т.е. разложение image также использует биномиальные коэффициенты. Для их расчета можно использовать формулу, выражающую биномиальный коэффициент через факториалы: image или использовать рекуррентную формулу:image Из бинома Ньютона и рекуррентной формулы ясно, что биномиальные коэффициенты — целые числа.

Одним из методов, позволяющих значительно сократить количество вычислений, является применение Фурье преобразований и дискретных Фурье преобразований.

Наличие большого числа библиотек, реализующих Фурье преобразований (во всевозможных вариантах быстрых версий), делает реализацию алгоритмов не очень сложной задачей для программирования.
Реализованные алгоритмы являются частью библиотеки с открытым исходным кодом FFTTools. Интернет-адрес: github.com/dprotopopov/FFTTools
Читать дальше →

Определение частоты сердечных сокращений методом корреляции с использованием быстрых Фурье преобразований

Время на прочтение4 мин
Количество просмотров3.8K

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

Читать далее

Самодельный Фурье-спектрометр

Время на прочтение16 мин
Количество просмотров107K
image Однажды я прочитал в Википедии статью про Фурье-спектрометр, и мне захотелось самостоятельно сделать такой. Эта задача совсем не простая, но действующий макет спектрометра все же удалось сделать. Сразу предупрежу — это не инфракрасный спектрометр, так что особенно интересных измерений им не провести.

О том, как же работает Фурье-спектрометр, и как его можно сделать в домашних условиях — далее (осторожно, много картинок!).
Читать дальше →

Обнаружение сигнала в шумах

Время на прочтение3 мин
Количество просмотров36K

По роду своей деятельности мне приходится осуществлять контроль различных параметров наземных импульсно-фазовых радионавигационных систем (ИФРНС) «Чайка» и Loran-C. В этой статье я хочу поделиться одним из методов обнаружения времени прихода импульса ИФРНС при наличии шумов. Метод применим во многих задачах поиска сигнала известной формы.
Читать дальше →

Машинное обучение — 4: Скользящее среднее

Время на прочтение3 мин
Количество просмотров34K
Принято считать, что две базовые операции «машинного обучения» — это регрессия и классификация. Регрессия — это не только инструмент для выявления параметров зависимости y(x) между рядами данных x и y (чему я уже посвятил несколько статей), но и частный случай техники их сглаживания. В этом примере мы пойдем чуть дальше и рассмотрим, как можно проводить сглаживание, когда вид зависимости y(x) заранее неизвестен, а также, как можно отфильтровать данные, которые контролируются разными эффектами с существенно разными временными характеристиками.

Один из самых популярных алгоритмов сглаживания, применяемый, в частности, в биржевой торговле — это скользящее усреднение (включаю его в цикл статей по машинному обучению с некоторой натяжкой). Рассмотрим скользящее усреднение на примере колебаний курса доллара на протяжении нескольких последних недель (опять-таки в качестве инструмента исследования используя Mathcad). Сами расчеты лежат здесь.



Читать дальше →

Фурье-события: использование в задачах бизнеса, прогноз, анализ cash-flow

Время на прочтение9 мин
Количество просмотров5.5K

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

Основные акценты работы:

  • требования к данным для корректной Фурье-аппроксимации временных рядов;
  • обоснованность ожиданий от прогнозов;
  • небольшой набор гармоник достаточен для аппроксимации сложного ряда;
  • что такое Фурье-событие;
  • чем и как Фурье-события могут помочь бизнесу;
  • Фурье-события в анализе cash-flow.
Читать дальше →

Как мы делали Guitar Tuner

Время на прочтение3 мин
Количество просмотров28K
В этом посте мы расскажем о создании нашего бесплатного приложения Guitar Tuner под Android.

image

В самом начале, на этапе появления идеи, хотелось сделать универсальный тюнер: телефон слышит звук, определяет ноту, показывает её. В теории это реализуется достаточно просто: звук — это колебание, колебание имеет частоту, частота колебания — это нота.
Читать дальше →

Лазерная локация, доплеровские изображения и синтез апертуры

Время на прочтение6 мин
Количество просмотров12K
Угловая разрешающая способность – важнейшая характеристика любой телескопической системы. Оптика утверждает, что это разрешение однозначно связано с длиной волны, на которой осуществляется наблюдение, и с диаметром входной апертуры телескопа. С большими диаметрами, как известно, большая проблема. Вряд ли когда-нибудь будет построен телескоп больше этого.
Одним из способов значительного увеличения разрешающей способности является применяемый в радиоастрономии и радиолокации метод синтезирования больших и сверхбольших апертур. В миллиметровом диапазоне самую большую апертуру — 14 км — обещают формировать 66-ю антеннами проекта ALMA в Чили.

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

Читать дальше →

Изучаем GNU Radio при помощи микрофона

Время на прочтение7 мин
Количество просмотров47K


Прошлая статья про SDR и GNU Radio показала, что тема интересна сообществу. Учитывая, что про пакет GNU Radio информации на русском языке почти нет, да и на английском не всё понятно, я решил описать свои опыты с GNU Radio.

Про SDR и GNU Radio я уже писал в предыдущей статье. Напомню, моя цель показать, как перехватывать и даже излучать радио сигнал для управления устройствами умного дома (да и вообще IoT). Считаю важным привлечь внимание к безопасности в IoT. Но до этого нам ещё далеко… Для начала разобраться бы с GNU Radio!

SDR-приёмник есть не у всех, и мне показалось, что будет полезным показать, что можно сделать с GNU Radio с тем, что есть у каждого — а именно с микрофоном вашего ПК и наушниками.

Под катом несколько интересных экзерсисов со звуком.
Читать дальше →

Восстановление расфокусированных и смазанных изображений

Время на прочтение10 мин
Количество просмотров225K
Восстановление искаженных изображений является одной из наиболее интересных и важных проблем в задачах обработки изображений – как с теоретической, так и с практической точек зрения. Частными случаями являются размытие из-за неправильного фокуса и смаз – эти дефекты, с которым каждый из вас хорошо знаком, очень сложны в исправлении – именно они и выбраны темой статьи. С остальными искажениями (шум, неправильная экспозиция, дисторсия) человечество научилось эффективно бороться, соответствующие инструменты есть в каждом уважающем себя фоторедакторе.

Почему же для устранения смаза и расфокусировки практически ничего нету (unsharp mask не в счет) – может быть это в принципе невозможно? На самом деле возможно – соответствующий математический аппарат начал разрабатываться примерно 70 лет назад, но, как и для многих других алгоритмов обработки изображений, все это нашло широкое применение только в недавнее время. Вот, в качестве демонстрации вау-эффекта, пара картинок:



Я не стал использовать замученную Лену, а нашел свою фотку Венеции. Правое изображение честно получено из левого, причем без использования ухищрений типа 48-битного формата (в этом случае будет 100% восстановление исходного изображения) – слева самый обычный PNG, размытый искусственно. Результат впечатляет… но на практике не все так просто. Под катом подробный обзор теории и практические результаты.
Осторожно, много картинок в формате PNG!
Читать дальше →

Шкатулка с музыкальным замком

Время на прочтение4 мин
Количество просмотров18K

Введение




Каких только замков ни придумали! И с хитрым ключом, и на комбинации цифр, и с распознанием частей тела. Однако, мне захотелось сделать замок, который я ещё не встречал. Поскольку я увлекаюсь игрой на пианино, за идеей далеко ходить не пришлось: было решено сделать шкатулку, которая открывается, лишь «услышав» знакомую мелодию.

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

Читать дальше →

Взгляд пешехода-математика: почему наши дороги — «гуано»

Время на прочтение6 мин
Количество просмотров40K
В этой заметке я не собираюсь причитать как старая бабка «всё разворовали, упыри!!», потому что не интересуюсь кто это делает и делает ли. Не интересует меня и излюбленная темка автомобилистов «задолбали эти ямки и колдобинки!», лично мне не на чем их объезжать: в вопросах выбора транспортных средств я предпочитаю ретранслировать мнение Андрея Рубанова из его книги «Йод» (э маст хэв ящитаю), в мирное же время есть велосипед и автобус. У меня нет и претензий к нашим ремонтным службам, кладущим, как о том пишут в этих ваших интернетиках, битумную смесь на дождик и снежок вопреки мнению этих самых интернетов. Я простой пешеход, и пока ещё меня устраивает сложившееся положение вещей.

Кстати, я и не математик вовсе, а всего-то студент а-ля математик-прикладник. Если кто не в курсе, это такие чуваки и чувихи (да простит меня офисный планктон), по долгу своих профессий вынужденные перерабатывать в алгоритмы математические формулы именитых и широко известных в узких кругах теоретиков. Эти наколенкеписаные алгоритмы в свою очередь работают сначала в прикладных исследованиях, а затем идут в прикладной софт, если вдруг по велению судьбы рынок возжелает закупить наработки математика-прикладника, погрязшего по уши в фортрано-матлабо-пропитоненных сорцах.

Так исторически повелось, что на студенческой скамье мне пришлось периодически решать задачи, за которые никакой другой более обеспеченный и, надо полагать, более разумный хомосапиенс не брался. И вот, по долгу своей студенческой стези познакомили меня с одной задачкой из области дорожно-строительных конструкций. Тема была «бесперспективняк». «О, чёт новенькое», — подумал я, и взялся за решение чисто в обмен на получение практических скиллов, бесплатно. Итоги работы меня немного удивили. Но обо всём по порядку, должным для гиктаймс стилем «научпоп для уставших за день сисадминов и начинающих лысеть погромиздов» ;)
Читать дальше →

Восстановление расфокусированных и смазанных изображений. Практика

Время на прочтение10 мин
Количество просмотров356K
Не так давно я опубликовал на хабре первую часть статьи по восстановлению расфокусированных и смазанных изображений, где описывалась теоретическая часть. Эта тема, судя по комментариям, вызвала немало интереса и я решил продолжить это направление и показать вам какие же проблемы появляются при практической реализации казалось бы простых формул.

В дополнение к этому я написал демонстрационную программу, в которой реализованы основные алгоритмы по устранению расфокусировки и смаза. Программа выложена на GitHub вместе с исходниками и дистрибутивами.

Ниже показан результат обработки реального размытого изображения (не с синтетическим размытием). Исходное изображение было получено камерой Canon 500D с объективом EF 85mm/1.8. Фокусировка была выставлена вручную, чтобы получить размытие. Как видно, текст совершенно не читается, лишь угадывается диалоговое окно Windows 7.



И вот результат обработки:



Практически весь текст читается достаточно хорошо, хотя и появились некоторые характерные искажения.

Под катом подробное описание проблем деконволюции, способов их решения, а также множество примеров и сравнений. Осторожно, много картинок!
Читать дальше →

Предварительная обработка речевых сигналов с помощью Matlab

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

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

Типичная величина одного интервала — 25,6 мс. Соседние интервалы берутся со смещением относительно предыдущего интервала. Применяемая величина перекрытия интервалов равна 10 мс. В результате предварительной проработки каждого из указанных интервалов получаем вектор из нескольких десятков спектральных значений.
Читать дальше →

Управление напряжением PWM сигналом (PWM+RC=DAC)

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров13K

В очередной тестировочной электронной плате появилась нужда выставлять напряжения на клеммах.

Существует очень остроумный способ собрать DAC используя PWM сигнал и аналоговый RC фильтр. На выходе будет желаемое напряжение. Причем, уровнем этого напряжения можно управлять цифровым образом из программы в микроконтроллере.

В этом тексте я написал как мне это удалось.

Читать далее

Игра Жизнь и преобразование Фурье

Время на прочтение5 мин
Количество просмотров63K
Многие слышали о великом и ужасном быстром преобразовании Фурье (БПФ / FFT — fast fourier transform) — но как его можно применять для решения практических задач за исключением JPEG/MPEG сжатия и разложения звука по частотам (эквалайзеры и проч.) — зачастую остается неясным вопросом.

Недавно я наткнулся на интересную реализацию игры «Жизнь» Конвея, использующую быстрое преобразование Фурье — и надеюсь, оно поможет вам понять применимость этого алгоритма в весьма неожиданных местах.
Читать дальше →

Вековая тайна геометрии раскрыта: математики нашли минимальный объем для вращения «карандаша» в 3D

Время на прочтение6 мин
Количество просмотров19K

Представьте карандаш на столе. Задача: повернуть его так, чтобы он указал в каждом возможном направлении ровно один раз, минимально соприкасаясь со столом. Можно вращать карандаш круговым движением вокруг середины, но существуют более эффективные способы.

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

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

Читать далее

Неувядающая классика или «чёрный ящик»: кто кого в битве за прогноз. Глава вторая. Завершение

Время на прочтение38 мин
Количество просмотров362

В прошлых частях второй главы мы с вами определили оптимальные значения параметров (p, d, q) статистических моделей семейства АРПСС по одноимённой методологии, и выполнили две подходящие модели, включая сезонную модель. В этой, завершающей, части мы будем использовать временной ряд со значениями температуры в качестве сигнала и применим к нему дискретное преобразование Фурье, чтобы выявить сезонные компоненты и разложить их на составляющие гармоники, сумму которых будем использовать в качестве экзогенной переменной. В конце выясним, сможет ли это улучшить точность предсказаний моделей.

Читать далее
1