2016-07-27 45 views
0

我开发了一个脚本,基本上利用一堆硬编码的函数来减少我的数据,并以data_#min形式绘制不同变量的图形,如附图所示。变量被命名为这样,然后在试验持续的#分钟中进行更改。特定的滴点算法 - Matlab

我希望能够做的是确定我指向箭头的这些情节的下降点。各点之间的变化量非常大,例如,从第50,018列至第50,019列约有-68%的变化。所有似乎都发生在100,000行第6列(由蓝色标线表示)的行(49000:51000)内的这些下降出现在数据10列x 100000行数组内。它们在变量中设置,例如称为data_10min。

所以我想找个什么是

data_10MIN(49000:51000,6) 

data_10min所示的具体滴点是变量,然后如何绘制的图表中所示的参数。

将某个硬编码函数自动化并使用硬编码轻松找到该点会很酷,唯一的问题是每个试验都左右移动,而且它们不一致,因此不同的试验在不同的时间下降(行号)。

findpeaks(data) 

此功能提供了分析的局部最小值最大值类型,但我不认为这真的已经工作了我的具体情况。如果有人能帮助我解决这个问题,并尝试或许想出第一步,这真的会帮助我。谢谢!

Picture of data_10Min drop point

回答

0

如果我正确地解释你的描述,你有兴趣在您的数据curvature的最大值。

为了简单起见,我假设你的数据是等距的,y是用x来参数化的。然后定义

x=data_10MIN(49000:51000,1); 
y=data_10MIN(49000:51000,6); 

dx = diff(x); 
dydx = diff(y)./dx; 
ddyddx = diff(dydx)./dx(1:end-1); 
kappa = ddyddx./(1+dydx(1:end-1).^2).^1.5; 
[~,locs] = findpeaks(kappa); 
locs = locs+1; % index shifted because of diff 

plot(x,y,'.-') 
plot(x(locs),y(locs),'ro') 

findpeaks(kappa)将让你这对应于图中的下降对曲率向量的位置。

+0

执行此操作后,它会给我一个变量'kappa',表示一个特定的数组。但是我所寻找的只是更多的特定点的(x,y)坐标。或者你称之为曲率的最大值。 –

+0

@EmonAliKhadem查看更新。 – Bort

+0

???下标索引必须是真正的正数 整数或逻辑(最后一行出现此错误,第一个小区工作)。 –