cutting a matrix A into 3 pieces with respect to matrix B

1 view (last 30 days)
here we have :
A=[1 2 3 14 15 16 7 8]
B=[1 2 3]
we know location of B is over 14 15 16 of matrix A.
we need to get 3 different matrix as below:
c=[1 2 3]
d=[14 15 16]
e=[7 8]
whar are the commands? many thanks in advance
  13 Comments
Walter Roberson
Walter Roberson on 17 Jul 2015
Is it known that those entries in B are bit-for-bit copies of the entries in A? Such as if A was indexed to produce B? Because when two floating point values are computed by even very very slightly different code, the results will not necessarily be equal due to floating point round-off. If the entries are not bit-for-bit copies then you will need to compare with a tolerance rather than compare for equality.
Mori
Mori on 17 Jul 2015
I can manage to get column 2 and 3 of A and B exactly equal, i.e. bit-for-bit copies. tried your answer but got error message. lets take into account that Columns 2 and 3 is equal in both matrix.

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 17 Jul 2015
[tf, idx] = ismember(B, A, 'rows');
minidx = min(idx);
maxidx = max(idx);
c = A(1:minidx-1,:);
d = A(minidx:maxidx,:);
e = A(maxidx+1:end, :);
  2 Comments
Mori
Mori on 17 Jul 2015
Edited: Mori on 17 Jul 2015
just changed 'rows' to 'legacy' and it worked. Thank you
[tf, idx] = ismember(B, A, 'legacy');
minidx = min(idx);
maxidx = max(idx);
c = A(1:minidx-1,:);
d = A(minidx:maxidx,:);
e = A(maxidx+1:end, :);

Sign in to comment.

More Answers (0)

Categories

Find more on Resizing and Reshaping Matrices 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!