2016-04-14 54 views
-1

我想选择一个时间向量内的特定数据来分配一个特定的起始点。在Matlab中使用IF循环和单调数据

Vit_lim = 5*(max(dcursor))/100 
A = find(dcursor > Vit_lim) 

A = [1 2 3 4 5 6 7 8 158 159 160.........318] 

开始点正被检测为第一个值。

初始8倍的值是假阳性(并且不表示真正的开始点(158)。

我需要补充的是找到开始点的条件是否单调连续20个值的第一值增加而增加。

这是一个更大的循环中。

+0

你可以请发布完整的代码..什么是dcursor?它看起来好像小于1. –

+0

你能提供一个典型的'dcursor'和'Vit_lim'数据吗? – Crowley

+0

大家好,下面的建议为我工作。感谢所有人回到我身边。 –

回答

0

所以,

A = [1 2 3 4 5 6 7 8 158 159 160.........318] 

found=0; 
idx=1; 
monoticSum=0; 
tempValue=A(1); 
idx=2; 

While found == 0 
temp=A(idx); 
if ((tempValue+1) == temp) 
    monoticSum = monoticSum+1; 
    tempValue = temp; 
else 
    monoticSum = 0 
end 
if (monoticSum == 20) 
    found=1; 
    break 
end 
idx=idx+1 
end 

这应该工作。 实际工作Ÿ,这是一个很好的起点。但是如果发现任何小于20的转换,则需要重新启动变量monoticSum。我已更新。

+0

感谢这工作! –

+0

@DavidGaul你可以请检查正确的答案吗?谢谢! :) – 16per9

+0

@DavidGaul你可以检查答案吗? – 16per9

0

由于您的样本数据有8个错误起始值,因此我不确定您连续20个值的含义。但这里有一个想法,发现一个样本,至少有20远离以前

b=find(diff(A)>20); 
start_idx = A(b+1);