繁体   English   中英

如何从矩阵中寻找价值

[英]How to find value from matrix

假设我有一个矩阵

A=[0.8 0.9 0.7 0.5 0.3 0.8 0.2 0.1];    % 8 points

其中A来自B逻辑1

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

除非您没有将索引存储在某个地方,否则我看不到您在这里有很多选择。

tmp = find(B);
idx = tmp(C);

如果您确实想多次使用此映射,建议您存储索引而不是二进制向量。 如果二进制向量是稀疏的(或不是布尔向量),这也将提高内存效率,因为您需要的条目更少。

如果还需要二进制向量,则应在内存允许的情况下都存储这两个向量。 当我在Matlab中完成这种映射时,实际上我既使用了二进制矢量(掩码)又使用了索引矢量。 这使我免于首先将掩码映射到索引,然后将索引映射到过滤后的位置(也就是说,每次跳过tmp = find(B); idx = tmp(C);一部分,直接进入idx = allIdx(C) )。

这将使您获得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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM