Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
Open more actions menu

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

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.