Is there a way to use setdiff or any function to compare two data sets within a range of each other?

5 次查看(过去 30 天)
I have two large data sets that are equal in dimensions but not in variables. Also the variables are similar but not exact so setdiff returns every value in the smaller data set. I'd like to know is there a way to add some range into the setdiff function like setdiff(A,B<+-2,B<+-2)?
  2 个评论
JChemPhD
JChemPhD 2015-3-30
No that doesn't make a a difference because the values aren't exactly the same. So if the data looked like this:
ds1
  • 1.21 0.550
  • 9.78 0.989
  • 13.67 0.947
ds2
  • 1.19 0.45
  • 13.55 1.05
I want setdiff to return only row 2 as different.

请先登录,再进行评论。

采纳的回答

Sean de Wolski
Sean de Wolski 2015-3-30
Starting in R2015a, there is a function ismembertol. You can use this and the set diff logic on idx.

更多回答(1 个)

Image Analyst
Image Analyst 2015-3-30
Since every row needs to be compared to every other row in the other matrix in a range of values, you can use (and may have to) use a double for loop with an if statement inside. Might not be a one-liner but at least it's straightforward and intuitive.
  7 个评论
JChemPhD
JChemPhD 2015-3-30
I still can't get it to work. How do I get matlab to run the command? I feel like this is simple to do. I'm sorry that I'm so lost.
Image Analyst
Image Analyst 2015-3-30
Try this:
A = [...
1.21 0.550
9.78 0.989
13.67 0.947]
B =[...
1.19 0.45
13.55 1.05]
[rowsA, columnsA] = size(A)
[rowsB, columnsB] = size(B)
different = false(rowsA, rowsB);
tolerance = 2;
for rowa = 1 : rowsA
thisRowA = A(rowa, :); % Extract just one row.
% Now check all rows of B to see if they are any that are different.
for rowb = 1 : rowsB
thisRowB = B(rowb, :); % Extract just one row.
% Check if rowb of B is different than rowa of A
itsDifferent = any(abs(thisRowB - thisRowA) > tolerance);
% Record whether it's different or not.
different(rowa, rowb) = itsDifferent;
end
end
different

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by