Arrays 在MATLAB中求两个不同长度阵列的具体并集
我在Matlab中遇到了一个编码问题,我试图找到一个没有太多循环的解决方案,以减缓过程 我有一个数组,看起来像:Arrays 在MATLAB中求两个不同长度阵列的具体并集,arrays,matlab,indexing,unique,Arrays,Matlab,Indexing,Unique,我在Matlab中遇到了一个编码问题,我试图找到一个没有太多循环的解决方案,以减缓过程 我有一个数组,看起来像: 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] 另一个看起来像: 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)) =
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]
另一个看起来像:
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)的索引
这里是我的方法:首先“计算”
Au
作为A
的唯一向量。在下一步中,使用B
对Au
进行逻辑索引:Au(逻辑(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) ) ) )
这里是我的方法:首先“计算”
Au
作为A
的唯一向量。在下一步中,使用B
对Au
进行逻辑索引:Au(逻辑(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) ) ) )
在这里
C
和D
不是倒退了吗?你目前的做法是什么?你看过find
函数了吗?@excaza谢谢-我改变了itIfa=[1,3,4,6]
的length(B)==6
?@excaza不,它等于4。这里C
和D
不是向后吗?你目前的方法是什么?你看过find
函数了吗?@excaza谢谢-我改变了它如果a=[1,3,4,6]
长度(B)==6?@excaza不,它等于4。谢谢,比我的for循环快多了!谢谢,比我的for循环快多了!