Filter löschen
Filter löschen

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

1 Ansicht (letzte 30 Tage)
Mori
Mori am 17 Jul. 2015
Bearbeitet: Mori am 17 Jul. 2015
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 Kommentare
Walter Roberson
Walter Roberson am 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 am 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.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 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 Kommentare
Mori
Mori am 17 Jul. 2015
Bearbeitet: Mori am 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, :);

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Geographic Plots finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by