如何从矩阵中找到价值

时间:2016-05-18 06:20:57

标签: matlab

假设我有一个矩阵

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中的真实位置?

2 个答案:

答案 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