Asked by Pat
on 29 Dec 2012

I have values as

data2 =

[20x480 double] [20x480 double] [20x480 double] [20x480 double] { 1x8 cell } { 1x8 cell } { 1x8 cell } { 1x8 cell }

data1 =

[20x480 double] { 1x8 cell }

i want to match data2 and data1 by euclidean distance and if same values are present i want to display it,plz help

*No products are associated with this question.*

Answer by Matt J
on 29 Dec 2012

Accepted answer

find(arrayfun(@(i) isequal(data2(:,i),data1), 1:size(data2,2) )),

Show 5 older comments

Matt J
on 2 Jan 2013

@Pat,

data1=data2 is not a valid example of your original problem description. In your problem as you originally posted it, data1 had only one column. When I modify your example as follows, I get the expected result

data2={rand(20,480),rand(20,480); num2cell(ones(1,8)), num2cell(ones(1,8))};

data1=data2(:,2);

find(arrayfun(@(i) isequal(data2(:,i),data1), 1:size(data2,2) ))

ans =

2

If this is not what you want, edit your question clarifying the form of the data and also, include a numerical example of desired input and output.

Opportunities for recent engineering grads.

## 1 Comment

## Matt J (view profile)

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/57605#comment_119658

What's in the 1x8 cells?

What do you want displayed? The data? The column numbers of data2 which agree with data1?

When are the values considered "the same"? When the Euclidean distance = 0 precisely or is there some tolerance>0? If the tolerance=0, why care about the Euclidean distance at all? Why not just use ISEQUAL, as in my Answer below?