Skip to content

Библиотека методов и средств цифровой обработки сигналов

License

Notifications You must be signed in to change notification settings

Infarh/MathCore.DSP

Repository files navigation

MathCore.DSP

Библиотека методов и средств цифровой обработки сигналов (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.

Обратная связь

Сборка и тесты

В репозитории присутствуют проекты тестов, бенчмарков и примеров (Console/WPF) для проверки корректности и производительности алгоритмов.

Лицензия

См. файл LICENSE (при наличии) в корне репозитория.

Состояние

Проект активно развивается. Обновления Readmeвключают расширение набора фильтров, оптимизацию FFT и добавление новых преобразований.


Если библиотека полезна — можно поставить звезду репозиторию. Благодарность мотивирует на дальнейшее развитие.

About

Библиотека методов и средств цифровой обработки сигналов

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors 2

  •  
  •