MathCore.DSP
0.0.15
.NET 8.0
This package targets .NET 8.0. The package is compatible with this framework or higher.
.NET Standard 2.0
This package targets .NET Standard 2.0. The package is compatible with this framework or higher.
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" />
<PackageReference Include="MathCore.DSP" />
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
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#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
#tool nuget:?package=MathCore.DSP&version=0.0.15
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
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)
Начало работы
- Установите пакет
- Добавьте
using MathCore.DSP; - Выберите окно (если требуется) и выполните FFT или фильтрацию
- Анализируйте спектр, модифицируйте сигнал, применяйте преобразования
Если нужна дополнительная функциональность – создайте Issue: это помогает развивать библиотеку.
| Product | Versions 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.
-
.NETStandard 2.0
- MathCore (>= 0.0.94.1)
- System.Memory (>= 4.6.3)
- System.Numerics.Vectors (>= 4.6.1)
-
net10.0
- MathCore (>= 0.0.94.1)
-
net8.0
- MathCore (>= 0.0.94.1)
-
net9.0
- MathCore (>= 0.0.94.1)
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 и обновление зависимостей.