Matlab 在向量上的另一个特定数字之前找到一个数字

Matlab 在向量上的另一个特定数字之前找到一个数字,matlab,vector,find,position,Matlab,Vector,Find,Position,所以我想知道matlab中一个事件发生在另一个事件之前的时间;我所说的事件是指数字。例如,我有一个向量,比如说: x=[0.30.30.1 0.2 0.5 0.1 0.3 0.1 0.5 0.1 0.4 0.5] 我想知道在0.5之前发生的0.1是在哪个位置。 我尝试了find(x,0.5,'last'),但这没有多大帮助,因为我想找到0.1。我考虑过创建另一个以0.5结尾的向量,然后搜索最后的0.1,但这有点低效,因为我的向量包含约300个事件。如果您愿意,可以尝试此操作。5立即出现在0.1之

所以我想知道matlab中一个事件发生在另一个事件之前的时间;我所说的事件是指数字。例如,我有一个向量,比如说:

x=[0.30.30.1 0.2 0.5 0.1 0.3 0.1 0.5 0.1 0.4 0.5]

我想知道在0.5之前发生的0.1是在哪个位置。
我尝试了find(x,0.5,'last'),但这没有多大帮助,因为我想找到0.1。我考虑过创建另一个以0.5结尾的向量,然后搜索最后的0.1,但这有点低效,因为我的向量包含约300个事件。

如果您愿意,可以尝试此操作。5立即出现在0.1之后

idx = [x(1:end-1)==0.1 & x(2:end)== 0.5 false]
这将生成一个逻辑索引,用于可以使用的数字索引

find(idx)
更新: 查找后面有.5的所有.1,而后面没有.1出现在.1和.5之间

f= find(x==.1 | x==.5)
f(x(f(1:end-1)) < x(f(2:end)))
f=find(x==0.1 | x==0.5)
f(x(f(1:end-1))
测试浮点值是否相等只是自找麻烦。你确定这就是OP的想法吗?这仅在0.5值紧跟在0.1之后时有效,正如烧杯所说,这仅在0.1正好在0.5:/之前时有效,并且它可能不适用于其他向量。我真的不能肯定这是OP想要的,除非在注释或编辑问题中指定了预期输出。我不知道…评论部分要求澄清。答案部分给出了有效的答案。您能在示例中向我们展示所需的输出吗?你想找到0.1的哪个位置?期望的输出是Y=[3 8 10];例如,位置6中的0.1不会被报告,因为在位置9中的0.5之前,位置8中还有另一个.1