I am currently prototyping some algorithms in Matlab that rely on matrix, DSP, statistics and image analysis functionality.
Some examples of what I may need:
- eigenvectors
- convolution in 2D and 3D
- FFT
- Short Time Fourier Transform
- Hilbert transform
- Chebyshev polynomials
- low pass filter
- random multivariate gaussian numbers
- kmeans
Later on I will need to implement these algorithms in C++.
I also have a license for Numerical Recipes in C++, which I like because it is well documented and have a wide variety of algorithms. I also found a class that helps with wrapping NR functions in MEX:nr3matlab.h. So using this class I should be able to generate wrappers that allow me to call NR functions from Matlab. This is very important to me, so that I can check each step when porting from Matlab to C++. However Numerical Recipes in C++ have some important shortcomings:
- algorithms implemented in a simple, and not necessarily very efficient manner
- not threaded
I am therefore considering using another numerical library. The ideal library should:
- be as broad in scope and functionality as possible
- be well documented
- (have commercial support)
- have already made Matlab wrappers
- very robust
- very efficient
- threaded
- (have a GPU implementation that can be turned on instead of the CPU with a "switch")
Which numerical library (libraries) would you suggest?
Thanks in advance for any answers!