# Compare values within a matrix

36 views (last 30 days)
Yewande Oni on 23 Jun 2015
Answered: Jan on 23 Jun 2015
I am comparing two matrices of different dimensions (A and B). I want to find values in B that are within 1 number unit to A. Is there anyway I can do this? B is a smaller matrix than A.
Thanks
Azzi Abdelmalek on 23 Jun 2015
What does that mean?

Ingrid on 23 Jun 2015
if you mean to find all numbers that are equal to each other when disregarding the numbers behind the comma than you can use something like this
A_r = round(A);
B_r = round(B);
C = intersect(A_r,B_r);
Yewande Oni on 23 Jun 2015
Edited: Yewande Oni on 23 Jun 2015
Hi Thanks but I want C to be a matrix of values that are within 1 unit of A, from B.
For example:
A = [31 16 8; 38 4 10]
B = [30 15 7; 34 5 14]
C would index that row 1 of A is a match to row 1 of B, because B is within +/- 1 of A
Is that possible?

Jan on 23 Jun 2015
A = [31 16 8; 38 4 10];
B = [30 15 7; 34 5 14];
nA = size(A, 1);
match = false(1, nA)
for iA = 1:nA
D = abs(bsxfun(@minus, A(iA, :), B)) <= 1.0;
match(iA) = any(all(D, 2));
end

### Categories

Find more on Matrix Indexing in Help Center and File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by