在向量上查找另一个特定数字之前的数字
Find a number before another specific number on a vector
所以我想知道在 matlab 中一个事件发生在另一个事件之前的时间;按事件我的意思是数字。例如,我有一个向量,比方说:
x = [0.3 0.3 0.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 在 .1 之后立即出现,你可以试试这个
idx = [x(1:end-1)==0.1 & x(2:end)== 0.5 false]
生成逻辑索引,对于数字索引你可以使用
find(idx)
更新:
找到所有 .1 之后有 .5 而没有任何 .1 出现在那些 .1 和 .5
之间
f= find(x==.1 | x==.5)
f(x(f(1:end-1)) < x(f(2:end)))
所以我想知道在 matlab 中一个事件发生在另一个事件之前的时间;按事件我的意思是数字。例如,我有一个向量,比方说:
x = [0.3 0.3 0.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 在 .1 之后立即出现,你可以试试这个
idx = [x(1:end-1)==0.1 & x(2:end)== 0.5 false]
生成逻辑索引,对于数字索引你可以使用
find(idx)
更新: 找到所有 .1 之后有 .5 而没有任何 .1 出现在那些 .1 和 .5
之间f= find(x==.1 | x==.5)
f(x(f(1:end-1)) < x(f(2:end)))