Dear Danziger
1) What you mean by crash? So, how you have verified the code?
2) I did not terminate with semicolon because I did not want to suppress the output.
3) The code is designed for n-dimensional space, but the previous version ( by: Zachary Danziger) works only with 2-dimensional data which is rarely occurs in real engineering applications.
Thanks for your evaluation.

Hi Danil and thanks for sharing this code. Actually i use Matlab (R2009a). for example 1 this error occured:
??? Error using ==> calllib
Pointer type must match data type

Error in ==> geodesic_distance_and_source at 19
[num_vertices, d, s] = calllib(geodesic_library, 'distance_and_source_for_all_vertices',
algorithm.id, tmp, tmp1);

Error in ==> example1 at 26
[source_id, distances] = geodesic_distance_and_source(algorithm);
approximately the same errors for example 3 and 5 but works very nice for examples 2 and 4.

I 've tested the original code two times, before and after the modifications proposed in the previous comments. The results were identical. However, despite being minor changes, we felt more comfortable with the modified one. In our application, that is the final code of the Hausdorff function:

function [dH] = hausdorff( A, B)
% I 've changed dist to dH
if(size(A,2) ~= size(B,2))

fprintf( 'WARNING: dimensionality must be the same\n' );

dH = [];
% I 've changed dist to dH
return;

end

dH = max(compute_dist(A, B), compute_dist(B, A))
; %I've included a semicolon

The rest was left unchanged.

I would like to express my gratitude to the author of this function Mr. Hassan Radvar-Esfahlan.

Its a good code.
The only (small) issue is that line 21 of the code is:
"dH = max(compute_dist(A, B), compute_dist(B, A))"
But the function is looking for the output called "dist". A small update to:
"dist = max(compute_dist(A, B), compute_dist(B, A));"
Without the update the code will not run and gives the error I mentioned. I'd be glad to change my rating to 5 stars after that very small change. :)

I have a Question, if I have two vectors,
is it possible to use of your M-file?
for example X1= x1=[1;2;3;4]
and x2=[3;6;4;1]
then error will appear
Error in ==> hausdorff at 16
if(size(A,2) ~= size(B,2))

Comment only

22 Nov 2010

Hausdorff Distance
Computes the Hausdorff distance between two point clouds.

I 've tested the original code two times, before and after the modifications proposed in the previous comments. The results were identical. However, despite being minor changes, we felt more comfortable with the modified one. In our application, that is the final code of the Hausdorff function:
function [dH] = hausdorff( A, B)
% I 've changed dist to dH
if(size(A,2) ~= size(B,2))
fprintf( 'WARNING: dimensionality must be the same\n' );
dH = [];
% I 've changed dist to dH
return;
end
dH = max(compute_dist(A, B), compute_dist(B, A))
; %I've included a semicolon
The rest was left unchanged.
I would like to express my gratitude to the author of this function Mr. Hassan Radvar-Esfahlan.

5

08 Jul 2010

Hausdorff Distance
Computes the Hausdorff distance between two point clouds.

Its a good code.
The only (small) issue is that line 21 of the code is:
"dH = max(compute_dist(A, B), compute_dist(B, A))"
But the function is looking for the output called "dist". A small update to:
"dist = max(compute_dist(A, B), compute_dist(B, A));"
Without the update the code will not run and gives the error I mentioned. I'd be glad to change my rating to 5 stars after that very small change. :)

Comment only