how to swap rows between matrix?

3 views (last 30 days)
sara
sara on 24 Oct 2014
Commented: dpb on 25 Oct 2014
hi guys,,, i have two matrix A & B, and i want to swap the rows between these matrix according to their Distance. the swap should be from B to A.it swap A rows with lower distance with B rows which have higher Distance. like row no.2 has D=14 and row 2 in B has D=16, so B_row should be swapped with A_row. how to do this? the matrix is below. help needed guys.
  2 Comments
Adam
Adam on 24 Oct 2014
Edited: Adam on 24 Oct 2014
I'm not quite sure I fully understand the extent of the problem here. Can you give a full example of expected output?
e.g. I understand you want to swap row 2 of A with row 2 of B based on the distance in each, but that brings a few questions (and probably others):
  • What is your algorithm for going down all rows of the matrix? Can row n of A only be swapped with row n of B based on comparing their distance or do you want to end with all the distances in B being shorter than all those in A or something else?
  • As I understand it D is the distance from the 1st row of the matrix as a simple number of bits that are different. However, if you swap a row from B into A then wouldn't its distance then be measured against the top row of A rather than the top row of B which gives it its current distance?
I don't think I have time to consider a complete answer myself, but hopefully clarification on my questions will help someone else provide you with more of an answer.
sara
sara on 24 Oct 2014
this algorithm should run for all the rows comparing their distance, if the distance of row n of A is shorter than row n of B, then it should swap them, and swap all the rows according to this condition.

Sign in to comment.

Accepted Answer

dpb
dpb on 24 Oct 2014
Presuming you mean literally the simple-minded swap row-by-row depending on the D between the two, it's pretty simple.
Given A and B,
ixless=A(:,2)<B(:,2); % the offending rows
C=A; % need temporary copy
A(ixless,:)=B(ixless,:); % move needed elements of B into A
B(ixless,:)=C(ixless,:); % ditto to put A into B (C is still original A)
clear C
  12 Comments
sara
sara on 25 Oct 2014
this is good,but how to get the output as matrix (with the swapped rows)?
dpb
dpb on 25 Oct 2014
What you mean? The above uses whatever matrices A and B are; substitute variable names appropriately for your case.

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!