在 MATLAB 中查找具有不同长度的两个数组的特定并集
Find specific union of two arrays with different length in MATLAB
我在 Matlab 中遇到了一个编码问题,我试图在其中找到一个解决方案,而不会因为太多的 for 循环而减慢进程。
我有一个数组,如下所示:
A = [1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,4,5]
另一个看起来像:
B = [0,1,0,1,1]
在 B 中,元素的数量总是与它们在 A 中的唯一元素一样多,并且值对应于 A 中的唯一元素,换句话说:
length(unique(A)) = length(B)
我想计算一个结果,告诉我 A 中 B == 0 (C) 和 B == 1 (D) 的索引。
C = [1,2,3,9,10,11,12]
D = [4,5,6,7,8,13,14,15,16,17,18]
这是我的方法:首先 "calculate" Au
作为 A
的唯一向量。在下一步中,使用 B
作为 Au
的逻辑索引: Au( logical(B) )
- 这将获取要在 A
中找到的值。然后检查哪些值是该组的成员,然后获取它们的索引。不过可能有更简单的方法。
A = [1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,4,5]
Au = unique( A );
B = [0,1,0,1,1];
C = find( ismember( A, Au( logical(B) ) ) )
D = find( ismember( A, Au( ~logical(B) ) ) )
我在 Matlab 中遇到了一个编码问题,我试图在其中找到一个解决方案,而不会因为太多的 for 循环而减慢进程。
我有一个数组,如下所示:
A = [1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,4,5]
另一个看起来像:
B = [0,1,0,1,1]
在 B 中,元素的数量总是与它们在 A 中的唯一元素一样多,并且值对应于 A 中的唯一元素,换句话说:
length(unique(A)) = length(B)
我想计算一个结果,告诉我 A 中 B == 0 (C) 和 B == 1 (D) 的索引。
C = [1,2,3,9,10,11,12]
D = [4,5,6,7,8,13,14,15,16,17,18]
这是我的方法:首先 "calculate" Au
作为 A
的唯一向量。在下一步中,使用 B
作为 Au
的逻辑索引: Au( logical(B) )
- 这将获取要在 A
中找到的值。然后检查哪些值是该组的成员,然后获取它们的索引。不过可能有更简单的方法。
A = [1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,4,5]
Au = unique( A );
B = [0,1,0,1,1];
C = find( ismember( A, Au( logical(B) ) ) )
D = find( ismember( A, Au( ~logical(B) ) ) )