How to calculate the distance between one row vector and a matrix??...

I need to calculate the distance between a one row vector a and a matrix i.e.
test_point = [ 1.2 0.6 3.1 1.3]
train_data = [7.7 2.8 6.7 2.3;
5.2 2.5 3.0 1.1;
2.0 6.5 8.6 9.8;
1.3 2.4 5.2 3.6;
4 3 5 4 2 6 7 6]
I have to find the distance of test_point with every row of train_data.... how can I do that??.. I have tried the MATLAB functions pdist2() and dist() and many other etc but they required two matrices of the same dimension...
plzz tell how to write the function to calculate the distance??...

Answers (2)

[edit]
a = bsxfun(@minus,train_data,test_point);
out = cellfun(@norm,num2cell(a,2));

5 Comments

I told you before it gives me the same error as
Error using pdist2 (line 133)
X and Y must have the same number of columns.
I have tried your given line of code..... the same error is there...
You didn't need to transpose it, this works fine:
out = pdist2(train_data,test_point)
What about "Euclidean distance" if I want to use it??... pdist2() is giving me the choices to use any distance calculation mathod i.e "Euclidean distance" ... but with your provided function bsxfun() I couldn't do this...
Sorry I didn't mention about it before... But I need to calculate the distances by using "Euclidean distance" in my function
thanxx alot Teja Muppirala..... this line is working fine..
out = pdist2(train_data,test_point)....

Sign in to comment.

Have you considered a "for" loop ?

2 Comments

No..... In haven't used "for" loop yet...
Do you mean that I should take each row of train_data one by one against test_point??... If yes then, in that case, should I use the function pdist2()??....
Using one of the library functions to calculate row by row is fine.

Sign in to comment.

Asked:

on 14 Dec 2012

Community Treasure Hunt

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

Start Hunting!