В данной работе показан процесс отыскания плотности вероятности аргумента комплексной амплитуды (КА), возмущенной гауссовским шумом. В качестве КА может выступать, например, образ цифрового сигнала некоторой системы передачи информации.
Алгоритм долговременной генерации розового шума во временной области

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

С помощью систем компьютерной алгебры найдены точные и доступные для инженерных расчетов оценки авто-корреляционных функций фликкер-шума, получаемые при идеальных оценках экспериментальных шумов, подчиняющихся степенному закону убывания плотности мощности от частоты.
Тестирование алгоритма деления больших чисел на С++ с использованием Python C API
Ранее был предложен некоторый Алгоритм деления 2W‑битовых чисел с использованием операций над W‑битовыми числами. Для тестирования использовались целые числа языка С++, что не позволяло проверять, например, 128-битные целые числа. Однако, в язык Python встроена поддержка целых чисел неограниченной ширины (Big Integer), а также имеется API для вызова методов Python из программ на языке С/С++. Это позволяет протестировать разные алгоритмы с числами, в том числе деление, используя в качестве результата строковое представление чисел.
В данной статье расписаны шаги для использования Python C API в программе на языке С++, а также показан пример вызова оператора деления двух целых чисел с возвратом результата в виде строки С. Использовалась следующая программная конфигурация:
Алгоритм деления 2W-разрядных чисел с использованием операций с числами разрядностью W

На примере 32-битных целых чисел рассматривается масштабируемый алгоритм деления, использующий числа с двукратно меньшей (16 бит) разрядностью. Для иллюстрации работоспособности алгоритма приведен код тестового приложения на языке С++.
Недвоичные регистры сдвига с линейной обратной связью модулированные пилообразным кодом
Ранее, Full-stack шифрование на обобщенных регистрах с линейной обратной связью / Хабр (habr.com), рассматривались недвоичные регистры сдвига с линейной обратной связью (LFSR), обеспечивающие периоды , где
.
Для увеличения периода комбинировались два регистра с периодами и
, что в итоге давало период
Full-stack шифрование на обобщенных регистрах с линейной обратной связью
В теории кодирования хорошо известны регистры сдвига с линейной обратной связью (РСЛОС или LFSR -- Linear Feedback Shift Register), которые применяются, например, для:
Сглаживание цифровых сигналов
Введение
Данную статью меня заставил написать пост habrahabr.ru/post/183986, где не совсем правильно используется некоторый алгоритм сглаживания изображения.
Сразу перейдём к сути дела.
Математические модели цифровых сигналов — вектора и матрицы, элементами которых являются числа. Числа могут быть двоичными (бинарный сигнал), десятичными («обычный» сигнал) и так далее. Любой звук, любое изображение и видео могут быть преобразованы в цифровой сигнал1: звук — в вектор, изображение — в матрицу, а видео — в последовательный набор матриц. Поэтому цифровой сигнал — это, можно сказать, универсальный объект для представления информации.
Задача сглаживания — это, по сути, задача фильтрации сигнала от скачкообразных (ступенчатых) изменений. Считается, что полезный сигнал их не содержит. Ступенчатый сигнал за счёт множества резких, но небольших по амплитуде, перепадов уровня содержит высокочастотные составляющие, которых нет в сглаженном сигнале. Поэтому для некоторого алгоритма сглаживания в первую очередь необходимо определить как сильно ослабляются разные частотные составляющие. Другими словами, необходимо построить амплитудно-частотную характеристику соответствующего фильтра, иначе велика вероятность «нарваться» на артефакты.
Задача сглаживания может использоваться при прореживании сигналов, то есть когда, например, необходимо отобразить большую картинку на небольшой экран. Или когда частота дискретизации звука снижается, например, с 48000 Гц до 44100 Гц. Понижение частоты выборок — коварная операция, требующая предварительной обработки сигнала (низкочастотной фильтрации), но это — тема отдельного разговора…
Приведём пример «плохого» сглаживания

Казалось бы, обычное усреднение и сигнал на выходе должен быть «гладким». Но как определить, насколько он стал «глаже»? Не переборщили ли мы? А может быть некоторые коэффициенты выбрать не по 1/3? А может быть усреднить по пяти точкам? Как определить насколько ослабляются частотные составляющие в сигнале? Как найти свой (то есть для конкретной задачи) оптимум?
На эти и некоторые другие вопросы я постараюсь ответить так, чтобы «обычный» программист смог обосновать свой алгоритм, — надеюсь, не только алгоритм на тему «Сглаживание», так как идеи будут излагаться весьма общие, заставляющие думать самому…
Information
- Rating
- 3,848-th
- Location
- Санкт-Петербург, Санкт-Петербург и область, Россия
- Date of birth
- Registered
- Activity