Discover MakerZone

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

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

New to MATLAB?

If I have a 3d matrix(A), how can i check if a given 2d matrix(B) is one of matrix A's pages?

Asked by may

may (view profile)

on 12 Feb 2013

I have a 3d matrix A, let say A is a 2x2x3 matrix as follows [1 2 ;3 4] [5 6;3 4] [5 6;1 2]

now I want to know if a 2x2 matrix like [5 6;3 4] is one of A's pages. so since [5 6;3 4] is the second page of A, I should get 1 as the answer.

0 Comments

may

may (view profile)

Products

3 Answers

Answer by Jan Simon

Jan Simon (view profile)

on 12 Feb 2013
Accepted answer

Another approach:

A = cat(3, [1 2; 3 4], [5 6; 3 4], [5 6; 1 2])
B = [5 6; 3 4]
S = reshape(A, 1, []);
T = reshape(B, 1, []);
match  = strfind(S, T);
Result = any(mod(match, 4) == 1);

This can be made a one-liner easily.

1 Comment

may

may (view profile)

on 12 Feb 2013

thank you a lot

Jan Simon

Jan Simon (view profile)

Answer by Teja Muppirala

Teja Muppirala (view profile)

on 12 Feb 2013

Given a 3d matrix A:

A = cat(3, [1 2; 3 4], [5 6; 3 4], [5 6; 1 2])

And some 2d matrix B

B = [5 6; 3 4]

Then, the following expression is one way to see if B is a page in A:

any(all(all(bsxfun(@eq,A,B)))) % Returns true

Moreover, if you would like to know which page of A in which B was found, you could do this:

find(all(all(bsxfun(@eq,A,B)))) % Returns 2

0 Comments

Teja Muppirala

Teja Muppirala (view profile)

Answer by Jan Simon

Jan Simon (view profile)

on 12 Feb 2013
Edited by Jan Simon

Jan Simon (view profile)

on 12 Feb 2013

What about a simple FOR loop?

A = cat(3, [1 2; 3 4], [5 6; 3 4], [5 6; 1 2])
B = [5 6; 3 4]
Result = false;
for iA = 1:size(A, 3)
  if isequal(A(:, :, iA), B)
    Result = true;
    break;
  end
end

Here it is exploited, that a single trailing index is omitted automatically:

size(A(:, :, 1))

does not reply [2, 2, 1], but [2, 2]. Otherwise ISEQUAL would fail here.

0 Comments

Jan Simon

Jan Simon (view profile)

Contact us