MathCore.DSP 0.0.15

dotnet add package MathCore.DSP --version 0.0.15
                    
NuGet\Install-Package MathCore.DSP -Version 0.0.15
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="MathCore.DSP" Version="0.0.15" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="MathCore.DSP" Version="0.0.15" />
                    
Directory.Packages.props
<PackageReference Include="MathCore.DSP" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add MathCore.DSP --version 0.0.15
                    
#r "nuget: MathCore.DSP, 0.0.15"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package MathCore.DSP@0.0.15
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=MathCore.DSP&version=0.0.15
                    
Install as a Cake Addin
#tool nuget:?package=MathCore.DSP&version=0.0.15
                    
Install as a Cake Tool

MathCore.DSP

Библиотека цифровой обработки сигналов (Digital Signal Processing) для .NET, предоставляющая набор базовых и продвинутых алгоритмов анализа и преобразования дискретных сигналов.

Кратко

  • Быстрые преобразования Фурье (FFT/Inverse FFT)
  • Свёртка, корреляция, авто/взаимо‑корреляция
  • Оконные функции (Hann, Hamming, Blackman, Kaiser и др.)
  • Проектирование FIR/IIR‑фильтров (низкочастотные, высокочастотные, полосовые, режекторные)
  • Дискретизация, ресэмплинг, интерполяция
  • Спектральный анализ, оценка амплитудного/фазового спектров
  • Нормализация, сглаживание, выделение огибающей
  • Работа с комплексными сигналами (структуры, операции)
  • Вспомогательные численные методы и утилиты

Целевые платформы

TFM Версия Назначение
netstandard2.0 .NET Standard 2.0 Совместимость с широким спектром ранних платформ
net8.0 .NET 8 Современные приложения
net9.0 .NET 9 Актуальные возможности и оптимизации
net10.0 .NET 10 Самая свежая платформа

Установка

# Установка через NuGet
 dotnet add package MathCore.DSP

Пример: расчёт спектра и фильтрация

using MathCore.DSP;              // Основные типы
using MathCore.DSP.FFT;          // FFT‑алгоритмы
using MathCore.DSP.Filters;      // Фильтры
using MathCore.DSP.Windows;      // Оконные функции

// Допустим есть сигнал
double[] signal = GetInputSamples(); // Получаем массив выборок (пользовательский метод) // получаем данные
int n = signal.Length;               // Длина сигнала // сохраняем длину

// Применим окно Хэнна для снижения утечек спектра
var window = Window.Hann(n);         // Генерируем окно Хэнна // создаём окно
for (var i = 0; i < n; i++)          // Применяем окно к сигналу // применяем окно
    signal[i] *= window[i];          // Умножаем на окно // масштабируем

// Выполним прямое FFT
var spectrum = FFT.RealFFT(signal);  // Расчёт комплексного спектра // считаем спектр

// Получим амплитудный спектр
var amplitudes = spectrum.GetAmplitudes(); // Амплитуды гармоник // извлекаем амплитуды

// Спроектируем низкочастотный FIR‑фильтр
double sampleRate = 48000;           // Частота дискретизации Гц // задаём частоту
double cutoff = 5000;                // Частота среза Гц // задаём срез
int order = 127;                     // Порядок фильтра (количество коэффициентов - 1) // задаём порядок
var fir = FirFilter.LowPass(order, cutoff, sampleRate, WindowType.Blackman); // Создаём фильтр // проектируем FIR

// Применим фильтр к исходному сигналу
var filtered = fir.Process(signal);  // Фильтрация // применяем фильтр

// Обратное FFT для восстановления (пример для модифицированного спектра)
var restored = FFT.RealInverseFFT(spectrum, n); // Обратное преобразование // обратное FFT

Возможности фильтров

  • FIR: прямое проектирование через оконные функции, поддержка разных типов окон
  • IIR: би-квадратичные секции (Biquad), стандартные прототипы (Butterworth и др.)
  • Поддержка пакетной обработки и потоковой фильтрации (Stateful)

Производительность

  • Используются оптимизированные реализации FFT (итеративные алгоритмы разбиения по битам)
  • Минимизация аллокаций за счёт переиспользования буферов там, где это возможно
  • Возможна интеграция с Span<T> и Memory<T> (на поддерживаемых TFM)

Структура

  • MathCore.DSP.FFT – преобразования Фурье
  • MathCore.DSP.Filters – фильтры и проектирование
  • MathCore.DSP.Windows – оконные функции
  • MathCore.DSP.Signals – типы данных сигналов
  • MathCore.DSP.Statistics – статистический анализ

Пример: свёртка двух сигналов

using MathCore.DSP.Operations; // Предположим модуль операций

double[] a = { 1, 2, 3, 4 };          // Первый сигнал // данные A
double[] b = { 0.25, 0.5, 0.25 };     // Импульсная характеристика фильтра // данные B

var convolution = Convolution.Linear(a, b); // Линейная свёртка // выполняем свёртку

Лицензия

MIT. Свободное использование в коммерческих и открытых проектах с сохранением уведомления о лицензии.

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

  • Issues: создавайте задачи на GitHub для багов и предложений
  • Discussions: предлагайте идеи и задавайте вопросы

Минимальный пример

// Быстрый расчёт амплитудного спектра
var amplitudes = FFT.RealFFT(samples).GetAmplitudes(); // Получаем массив амплитуд

Примечания

  • API может эволюционировать между основными версиями
  • При использовании в реальном времени уделяйте внимание задержкам фильтров FIR (линейная фаза → групповая задержка = (N-1)/2)

Начало работы

  1. Установите пакет
  2. Добавьте using MathCore.DSP;
  3. Выберите окно (если требуется) и выполните FFT или фильтрацию
  4. Анализируйте спектр, модифицируйте сигнал, применяйте преобразования

Если нужна дополнительная функциональность – создайте Issue: это помогает развивать библиотеку.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.0.15 393 11/19/2025
0.0.14.2 401 6/11/2025
0.0.14.1 447 2/5/2025
0.0.14 232 11/12/2024
0.0.13.15 2,354 7/30/2024
0.0.13.14 239 7/3/2024
0.0.13.13 235 6/12/2024
0.0.13.12 229 6/1/2024
0.0.13.11 241 4/25/2024
0.0.13.10 412 12/5/2023
0.0.13.9 399 8/4/2023
0.0.13.8 583 12/12/2022
0.0.13.7 443 12/8/2022
0.0.13.6 430 12/5/2022
0.0.13.5 533 12/1/2022
0.0.13.4 540 11/12/2022
0.0.13.3 591 9/23/2022
0.0.13.2 582 9/18/2022
0.0.13.1 579 8/2/2022
0.0.13 624 4/5/2022
0.0.12.2 600 3/25/2022
0.0.12.1 599 3/25/2022
0.0.12 589 3/16/2022
0.0.11.3 621 3/16/2022
0.0.11.2 613 3/8/2022
0.0.11.1 609 3/8/2022
0.0.11 606 3/3/2022
0.0.10.1 598 2/22/2022
0.0.10 658 2/4/2022
0.0.9 485 12/12/2021
0.0.8.6 500 10/8/2021
0.0.8.5 499 9/7/2021
0.0.8.4 627 7/10/2021
0.0.8.3 488 6/20/2021
0.0.8.2 510 6/18/2021
0.0.8.1 541 5/3/2021
0.0.8 578 12/28/2020
0.0.7.1 693 6/18/2020
0.0.7 768 12/28/2019
0.0.6 710 11/2/2019

Миграция на .NET 10.0 и обновление зависимостей.