0
想象我有一个数组在MATLAB中将子数组索引转换为数组索引?
A = [12 52 12 62 42];
通过“逻辑提取指数” C = logical([1 1 0 1 0])
,我形成了子阵
B = A(C);
问题
什么是发现的一种优雅的方式元素索引A
,因为其B
的索引是2,比如说?
想象我有一个数组在MATLAB中将子数组索引转换为数组索引?
A = [12 52 12 62 42];
通过“逻辑提取指数” C = logical([1 1 0 1 0])
,我形成了子阵
B = A(C);
问题
什么是发现的一种优雅的方式元素索引A
,因为其B
的索引是2,比如说?
这里有两种选择,或者寻找其中的B
元件的A
的元素,如果有A
重复,或通过使用C
矩阵可能失败匹配,查找第n之一。
A = [12 52 12 62 42];
C = logical([1 1 0 1 0])
B = A(C)
[~,idx]=find(A==B(3)) %// finds where the third element of B was in A
idx=find(cumsum(C)==3,1) %// finds where the third 1 in C is
find
给出了答案。假设indB
表示B
中的索引。然后A
中的索引indA
为
indA = find(C); %// find nonzeros in C
indA = indA(indB); %// take the indB-th nonzero in C
加1,'cumsum'是该死的聪明。 – 2014-12-11 03:38:44
此外,'A. * C'为您提供了一个带有“A”元素的向量,其中“C”为1,以及“C”为0的零点,这可能很有用。您也可以在代码中使用它,具体取决于您尝试实现的目标。 – David 2014-12-11 03:57:55