有两种结构,即矩阵A(m×8)和矢量B(n×1),它们是唯一的。 B的所有元素都在A中,但A中的每一行都有4个随机排列的B元素。问题是:我想在A的每一行中找到并找到B的4个元素,并将这4个元素移动到矩阵A的大部分左侧或存储在新的矩阵中C.如何快速完成。
进一步解释,
Matrix A =[1 3 10 5 2 20 30 35]
[2 4 25 35 1 5 12 13]
.
.
Vector B = 1:9. Hence A has [1 3 5 2] and [2 4 1 5] of B in its first and second row. I want to locate those elements of B in
A and rearrange A or store anew like,
A=[1 3 5 2 10 20 30 35]
[2 4 1 5 25 35 12 13]
(or)
C=[1 3 5 2]
[2 4 1 5]
我尝试使用
查找并找到这些元素[I,J]=ismember(A,B)
并且不知道如何继续进行。
答案 0 :(得分:2)
我认为这可以满足您的需求:
At = A.';
[I,J]=ismember(At,B);
C = reshape(At(I(:)),[],size(At,2)).'
D = [C reshape(At(~I(:)),[],size(At,2)).'];
您想要的结果是C
和D
。
示例:
>> A =
1 3 4 5 7 6 8
9 3 1 5 2 6 9
>> B =
1 2 3 4 5
>> C =
1 3 4 5
3 1 5 2
>> D
1 3 4 5 7 6 8
3 1 5 2 9 6 9
答案 1 :(得分:1)
我认为可以通过单一的重塑完成并且像这样成员:
AT = A';
C = reshape(AT(ismember(AT,B)),4,[])
示例:强>
假设您的A
和B
看起来像您描述的那样,那么您可以应用解决方案:
A = [1 3 10 5 2 20 30 35
2 4 25 35 1 5 12 13];
B = 1:9;
AT = A';
C = reshape(AT(ismember(AT,B)),4,[])'
会给:
C =
1 3 5 2
2 4 1 5