假设我有一个矩阵
A=[0.8 0.9 0.7 0.5 0.3 0.8 0.2 0.1]; % 8 points
其中A
来自1
B
B=[1 0 1 0 0 1 0 1 0 1 1 0 1 1];
因为我想找到满足
的位置C
C=find(A<0.6 & A>0.35)
其中ans是C=4
。我的问题是如何获得B=8
中的真实位置?
答案 0 :(得分:1)
除非您没有将索引存储在某处,否则我无法看到您在此处有多少选择。
tmp = find(B);
idx = tmp(C);
如果您确实想多次使用此映射,我建议您存储索引而不是二进制向量。如果二进制向量是稀疏的(或不是布尔向量),这也将是更高的内存效率,因为您将需要更少的条目。
如果您还需要二进制向量,则应将两者都存储在内存允许的情况下。当我在Matlab中完成这种映射时,我实际上使用了二进制向量(掩码)和索引向量。这使我免于首先将蒙版映射到索引,然后索引到过滤位置(也就是说,每次都跳过tmp = find(B); idx = tmp(C);
部分并直接转到idx = allIdx(C)
)。
答案 1 :(得分:0)
这将为您提供B
中的索引A=[0.8 0.9 0.7 0.5 0.3 0.8 0.2 0.1];
B=[1 0 1 0 0 1 0 1 0 1 1 0 1 1];
C=find(A<0.6 & A>0.35);
temp=0;
for i=1:size(B,2)
temp=temp+B(i);
if(temp==C)
break;
end
end
locationB=i;
locationB