Библиотека методов и средств цифровой обработки сигналов (Digital Signal Processing) для .NET
MathCore.DSP предоставляет набор алгоритмов и утилит для анализа, синтеза, фильтрации и преобразований дискретных сигналов в научных, инженерных и прикладных задачах.
- .NET Standard 2.0 (широкая совместимость)
- .NET 8, .NET 9, .NET 10 (современные возможности и оптимизации)
Через NuGet:
dotnet add package MathCore.DSPИли в PackageReference:
<PackageReferenceInclude="MathCore.DSP"Version="*" />- Генерация сигналов (синус, прямоугольный, пилы, шумы)
- Оконные функции (Hann, Hamming, Blackman, Bartlett и др.)
- Спектральный анализ (DFT/FFT, мощность спектра, периодограммы)
- Фильтры:
- FIR (окно, частотный метод, обработка свёрткой)
- IIR (би-квадратные секции, стандартные прототипы)
- Свёртка и корреляция
- Ресемплинг и интерполяция
- Преобразования (быстрое Фурье, дискретное, Гильберта, Z-преобразование вспомогательные функции)
- Работа с комплексными сигналами и огибающей
- Статистические характеристики сигналов (среднее, RMS, выбросы)
- Нормализация, окно скользящего среднего, сглаживание
- Агрегирующие и вспомогательные математические утилиты
usingMathCore.DSP;usingMathCore.DSP.Filters;usingMathCore.DSP.FFT;// Генерация тестового сигнала: сумма двух синусоид + шумvarsample_rate=1024;// Гцvarn=1024;vart=Enumerable.Range(0,n).Select(i =>(double)i/sample_rate).ToArray();varsignal=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();// Применение окна для снижения утечек спектраvarwindow=Windows.Hann(n);for(vari=0;i<n;i++)signal[i]*=window[i];// Быстрое преобразование Фурьеvarfft=FFT.Calculate(signal);// Комплексный спектрvaramplitude=fft.GetAmplitudes();// Амплитудный спектр// Проектирование простого низкочастотного FIR фильтраvarcutoff=80.0/sample_rate;// Относительная частотаvarfir=FIR.LowPass(order:64,wc:cutoff,WindowType.Hamming);varfiltered=fir.Process(signal);// Фильтрация// Теперь filtered содержит сигнал с подавленными компонентами выше 80 ГцРасширенная документация и дополнительные примеры будут публиковаться постепенно. Предложения по улучшению приветствуются через Issues.
- Ошибки и предложения: https://github.com/infarh/MathCore.DSP/issues
- Pull Requests приветствуются (следуйте принятым стилям и практикам проекта)
В репозитории присутствуют проекты тестов, бенчмарков и примеров (Console/WPF) для проверки корректности и производительности алгоритмов.
См. файл LICENSE (при наличии) в корне репозитория.
Проект активно развивается. Обновления Readmeвключают расширение набора фильтров, оптимизацию FFT и добавление новых преобразований.
Если библиотека полезна — можно поставить звезду репозиторию. Благодарность мотивирует на дальнейшее развитие.