MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today
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.

Pat on 3 Jan 2013

if data1 has different values i get empty matrix

i want to display data is present ,how can i check the answer if it is empty matrix or not and display it

so how i can display it as "data is present".

## 1 Comment

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?