Sort vector A according to vector B

I have two 14x1 vectors A and B. i am trying to sort A to match with B.
A = [0.9; 0.2; 0.4; 0.2; 0.3; 0.4; 0.7; 0.4; 0.1; 0.8; 0; 0; 0; 0];
B = [0; 0; 1; 1; 1; 1; 0; 0; 0; 0; 0; 0; 0; 0];
I am trying to make it so the 0's in A match with the 1's in B with a result of:
C = [0.9; 0.2; 0; 0; 0; 0; 0.4; 0.2; 0.3; 0.4; 0.7; 0.4; 0.1; 0.8]
This is my attempt:
TF1 = B(:,1)==1;
for j = 1:length(A)
n = j:length(B);
A(TF1,:) = 0
end
Any help would be appreciated. Thank you!

2 个评论

Why? What's the use case (context, reason)? Is it homework?
Did you try a simple for loop with two counters to keep track of indexes?
I am creating a program to automate a 2D truss solution. To solve for my reaction forces I need my displacement vector (A) to have the zeros lined up with my boundary conditions (B). I have not been able to successfully do this with a for loop or by sorting the vectors.

请先登录,再进行评论。

 采纳的回答

A = [0.9; 0.2; 0.4; 0.2; 0.3; 0.4; 0.7; 0.4; 0.1; 0.8; 0; 0; 0; 0];
B = [0; 0; 1; 1; 1; 1; 0; 0; 0; 0; 0; 0; 0; 0];
Ais0=A==0;
Bis1=B==1;
C=zeros(size(A));
C(Bis1)=A(Ais0);
C(~Bis1)=A(~Ais0);
C
C = 14×1
0.9000 0.2000 0 0 0 0 0.4000 0.2000 0.3000 0.4000

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Shifting and Sorting Matrices 的更多信息

产品

版本

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by