Skip to content

Latest commit

 

History

History
63 lines (49 loc) · 2.2 KB

README.md

File metadata and controls

63 lines (49 loc) · 2.2 KB

Techniki Programowania - projekt 3

Projekt polega na zbudowaniu biblioteki w c++ do przetwarzania sygnałów. Biblioteka ma być udostępniona jako moduł pythonowy przy użyciu biblioteki pybind11.

Zależności

W celu realizacji projektu należy przygotować środowisko pracy. Niezbędne będą:

  1. CMake
  2. Kompilator (MSVC2019 na Windowsie, g++ na linuksie)
  3. git (git bash/ git for desktop na windowsie, git na linuksie)
  4. Python (najlepiej miniconda)
Windows

CMake

MSVC

git

miniconda

Ubuntu

sudo apt install build-essential cmake git
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
chmod +x Miniconda3-latest-Linux-x86_64.sh
./Miniconda3-latest-Linux-x86_64.sh

Szablon projektu

Jako punkt wyjściowy najwygodniej jest pobrać przykład udostępniony przez autorów pybind11:

git clone https://github.com/pybind/scikit_build_example

Zadanie projektowe

Podstawowe funkcjonalności do zaimplementowania:

  1. Wizualizacja sygnału z wykorzystaniem biblioteki matplotplusplus
  2. DFT i transformata odwrotna
  3. Filtracja 1D i 2D
  4. Generowanie sygnałów o zadanej częstotliwości (sin, cos, prostokątny, piłokształtny)

Dodatkowo:

  1. Pochodna sygnału
  2. Wykrywanie krawędzi (korzystajac z filtraci)
  3. Rozmycie gaussa (korzystajac z filtracji)
  4. Wykrywanie piku w sygnale dowolną metodą
  5. Progowanie sygnału (1 dla > progu, 0 dla mniejszego)
  6. Usuwanie niskich częstotliwości z sygnału (korzystajac z DFT)
  7. Usuwanie wysokich częstotliwości z sygnału (korzystajac z DFT)
  8. Zaszumianie sygnału (dodawanie sygnału losowego)
  9. Liczenie korelacji dwóch sygnałów
  10. Liczenie autokorelacji sygnału
  11. Interpolacja dwuliniowa na siatce