C / C ++でのDSPプログラミング


8

私はMATLABを使用しており、MATLABでの信号処理とプロットに基本的な使用経験がありますが、OpenCVを使用した画像処理で作業しているため、MATLABよりもC / C ++の方が快適です... C / C ++で信号処理を行うためのDSPライブラリまたはプラットフォーム(OpenCVは画像処理用)はありますか?


1
無線通信アプリケーションに偏っている1つの例は、GNU Radioです。
Jason R

1
C / C ++には多くのFFTライブラリがあります。FFTWは特に高速です。
ジム・クレイ

3
この質問に対する適切な回答を得るための1つの問題は、「信号処理」が、多くのドメイン固有のサブフィールドを含む非常に広義の用語であることです。私はOpenCVを信号処理ライブラリと呼んでいますが、それは、たとえば通信にDSPを使用する人にとっては役に立ちません。おそらく、クエリを絞り込むことができます。
Jason R

1
Re:@JimClayのコメント:FFTWは素晴らしいライブラリです。プロジェクトでCソースコードを使用する必要がある場合は、KissFFTをチェックしてください。それは最適化されていませんが、それはかなり良いです、そして名前が示唆するようにソースコードを読むのはかなり簡単です。sourceforge.net/projects/kissfft
デイブC

回答:


7

Octaveは、マルチプラットフォームのオープンソースの数学および行列ツールキットです。これは、MATLABと非常によく似たコマンドラインインタープリターを備えていますが、使用可能なC ++ APIもあります。画像処理とは対照的に信号処理について言及しているので、私は音声処理を意味していると思います。そのため、オクターブの「信号」および「音声」パッケージ(たとえばwavreadを提供する)を調べる必要があるかもしれません。ただし、APIは主にオクターブCLIの内部使用向けに設計されており、安定していないと見なされている(つまり、バインディングが変更される可能性がある)ことに注意してください。また、ライブラリは主にリンクされることを意図していないため、ドキュメントは控えめに言っても不十分です。

または、GNU Scientific Libraryもあります。これは主に信号処理を目的としたものではなく、複素数、行列、fftなどを提供します。Windowsでは、Cygwinを使用して自分でコンパイルする必要があります。


4

gnuradioをチェックアウトしましたか?これらには、信号処理で使用されるものと同様のブロックがあります。私が数年前に慣れたとき、すでに利用可能であり、作業中のブロックが多数あり、すべてC ++で記述されていました。ブロックはpythonを使用して一緒に接着されましたが、完全なC ++の実装が進行中です。



2

私はそれを使用していませんが、matlabのような機能でarmadillo(http://arma.sourceforge.net/)について良いことを聞いています。他にもいくつか似ていますが、アルマジロは最適化され、積極的に開発されているようです。

octave、matlab、またはpython / numpy / scipy(「pylab」と呼ばれることもあります)の魅力の1つは、タブ補完機能を備えたインタラクティブなインタープリターとともにシンプルな構文を使用することです。これにより、開発をかなりスピードアップできます。

python / numpyを使用すると、dllをpythonラッパーでラップし、インタラクティブインタープリター内から使用することができます。これはmatlabでも実行できると思いますが、これがオクターブで実行できるかどうかはわかりません。ただし、これはpython / numpyでは少し複雑になる可能性があることに注意してください。ただし、パフォーマンスが重要な場合は、以前にコストに見合うメリットがあることがわかりました。


2

Armadilloは、C ++の線形代数(式テンプレートを介してかなり高速)に最適であり、信号処理にも確実に使用できます。さまざまな要素タイプの行列をサポートするほかに、画像処理に役立つ3次テンソル(キューブ)もサポートしています。

IT ++と呼ばれる、関連するC ++ライブラリもあります。これは、Armadilloほど高速ではありませんが、信号処理と通信を対象としたビルド済みのクラスが多くあります。


更新:バージョン4.0以降、Armadilloは1D FFT2D FFT、および畳み込みの
mtall

0

JUCEは素晴らしいC ++オーディオプラットフォームライブラリです。作業できるサウンドカードでI / Oバッファーをすばやく再生したい場合は、VSTをかなり簡単に作成できます。さらに、必要に応じて、クロスプラットフォームVSTとして使用できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.