Библиотека методов и средств цифровой обработки сигналов (Digital Signal Processing) для .NET
MathCore.DSP предоставляет набор алгоритмов и утилит для анализа, синтеза, фильтрации и преобразований дискретных сигналов в научных, инженерных и прикладных задачах.
- .NET Standard 2.0 (широкая совместимость)
- .NET 8, .NET 9, .NET 10 (современные возможности и оптимизации)
Через NuGet:
dotnet add package MathCore.DSPИли в PackageReference:
<PackageReference Include="MathCore.DSP" Version="*" />- Генерация сигналов (синус, прямоугольный, пилы, шумы)
- Оконные функции (Hann, Hamming, Blackman, Bartlett и др.)
- Спектральный анализ (DFT/FFT, мощность спектра, периодограммы)
- Фильтры:
- FIR (окно, частотный метод, обработка свёрткой)
- IIR (би-квадратные секции, стандартные прототипы)
- Свёртка и корреляция
- Ресемплинг и интерполяция
- Преобразования (быстрое Фурье, дискретное, Гильберта, Z-преобразование вспомогательные функции)
- Работа с комплексными сигналами и огибающей
- Статистические характеристики сигналов (среднее, RMS, выбросы)
- Нормализация, окно скользящего среднего, сглаживание
- Агрегирующие и вспомогательные математические утилиты
using MathCore.DSP;
using MathCore.DSP.Filters;
using MathCore.DSP.FFT;
// Генерация тестового сигнала: сумма двух синусоид + шум
var sample_rate = 1024; // Гц
var n = 1024;
var t = Enumerable.Range(0, n).Select(i => (double)i / sample_rate).ToArray();
var signal = t.Select(x => 0.7 * Math.Sin(2 * Math.PI * 50 * x) +
0.3 * Math.Sin(2 * Math.PI * 120 * x) +
0.05 * (2 * Random.Shared.NextDouble() - 1)).ToArray();
// Применение окна для снижения утечек спектра
var window = Windows.Hann(n);
for(var i = 0; i < n; i++) signal[i] *= window[i];
// Быстрое преобразование Фурье
var fft = FFT.Calculate(signal); // Комплексный спектр
var amplitude = fft.GetAmplitudes(); // Амплитудный спектр
// Проектирование простого низкочастотного FIR фильтра
var cutoff = 80.0 / sample_rate; // Относительная частота
var fir = FIR.LowPass(order: 64, wc: cutoff, WindowType.Hamming);
var filtered = fir.Process(signal); // Фильтрация
// Теперь filtered содержит сигнал с подавленными компонентами выше 80 ГцРасширенная документация и дополнительные примеры будут публиковаться постепенно. Предложения по улучшению приветствуются через Issues.
- Ошибки и предложения: https://github.com/infarh/MathCore.DSP/issues
- Pull Requests приветствуются (следуйте принятым стилям и практикам проекта)
В репозитории присутствуют проекты тестов, бенчмарков и примеров (Console/WPF) для проверки корректности и производительности алгоритмов.
См. файл LICENSE (при наличии) в корне репозитория.
Проект активно развивается. Обновления Readmeвключают расширение набора фильтров, оптимизацию FFT и добавление новых преобразований.
Если библиотека полезна — можно поставить звезду репозиторию. Благодарность мотивирует на дальнейшее развитие.