[英]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.