N(N-1)/2 distances from a d*N matrix of column vectors (5000<N<50000)

3 visualizaciones (últimos 30 días)
Oliver Richardson
Oliver Richardson el 17 de Ag. de 2017
Respondida: Torsten el 17 de Ag. de 2017
I have a d*N matrix of column vectors for 5000<N<50000 and wish to calculate the N(N-1)/2 distances between the vectors. The program permutes the vectors by indexing the matrix with a pair of FOR loops.
(1) Can anyone guestimate the potential speed up if I create a MEX file first?
(2) Is Matlab Coder the only way to make MEX files that Matlab can read directly?
(3) I understand it is possible to (i) interface with Xcode (ii) run .exe files from Matlab on Windows machines - Whats the simplest way of running Xcode/C++ compiled code from Matlab on a Mac?
Many thanks & Regards

Respuestas (2)

Ryan Livingston
Ryan Livingston el 17 de Ag. de 2017
Editada: Ryan Livingston el 17 de Ag. de 2017
(1) Estimating speedup is very difficult because it depends on so many factors. Here's some of the documentation Coder provides about MEX acceleration:
As the first link says, it is best to profile your code in MATLAB using the MATLAB profiler. This will point out expensive sections. You can then move those expensive parts into separate functions, generate code from those functions, and use the generated MEX files.
Also note, that if the runtime is dominated by built-in operations/functions like svd, lu, fft, then MATLAB Coder likely won't speed up the code since those operations are already compiled in MATLAB.
(2) You can hand write C, C++, and Fortran and compile those into MEX files as well:
(3) Could you elaborate on what you'd like to accomplish by interfacing compiled code from MATLAB? Do you want to use XCode to compile the MEX? Are you looking to use a shared library in MATLAB? Are you looking to just invoke an executable from MATLAB like you could do with the system command or ! operator?

Torsten
Torsten el 17 de Ag. de 2017
Generate a copy of the matrix and use the solution given under
https://statinfer.wordpress.com/2011/11/14/efficient-matlab-i-pairwise-distances/
Best wishes
Torsten.

Categorías

Más información sobre MATLAB Coder en Help Center y File Exchange.

Productos

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by