how to swap rows between matrix?

4 Ansichten (letzte 30 Tage)
sara
sara am 24 Okt. 2014
Kommentiert: dpb am 25 Okt. 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 Kommentare
Adam
Adam am 24 Okt. 2014
Bearbeitet: Adam am 24 Okt. 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 am 24 Okt. 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.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

dpb
dpb am 24 Okt. 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 Kommentare
sara
sara am 25 Okt. 2014
this is good,but how to get the output as matrix (with the swapped rows)?
dpb
dpb am 25 Okt. 2014
What you mean? The above uses whatever matrices A and B are; substitute variable names appropriately for your case.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by