0

我试图确定一个以最大值为特征的周期的开始。尽管数据似乎是周期性的,但没有固定的点数,所以我不能将数据分成 50 个点并搜索最大值。但是,我知道循环不能在 20 pts (pt_limit) 过去之前重复,这可能会被用来检查。由于 DAQ 硬件的限制,也没有数据触发。我在下面包含了几个周期,但实际数据集将包含数千个这样的准周期周期。
这是一个示例(对于较长的数据集,请提前抱歉):

data = [9147    9147    9513    9696    9696    9940    10093   10093   10246   10520   10520   10520   10795   10947   10947   11222   11772   11772   9452    4049    4049    4049    599 111 691 691 1515    2309    2309    2309    3072    3683    3683    4415    4995    4995    5453    5453    6063    6063    6643    7162    7162    7468    7742    7742    7742    8200    8536    8536    8841    9116    9116    9238    9543    9543    9543    9818    10001   10001   10246   10551   10551   10673   10673   10673   10917   10917   8749    4049    4049    1057    722 722 722 1210    2004    2004    2828    3683    3683    4293    4293    4751    4751    5270    5728    5728    6155    6643    6643    6643    7071    7437    7437    7712    8048    8048    8353    8353    8689    8689    9024    9269    9269    9513    9909    10215   10215   10215   10368   10673   10673   11008   11192   11192   11039   7864    7864    7864    2828    661 661 661 1332    1332    2309    2309    2950    2950    3683    4507    4507    5117    5667    5667    5667    6094    6521    6521    6949    7437    7437    7864    7864    8169    8169    8322    8689    9086    9086];  
dt = [0 diff(data)];  
t_thresh = -0.5;       % threshold to identify changes (exclude noise)  
ind = find(dt < t_thresh);  
figure
set(gcf,'position',[50 50 (1080) (675)])
ax(1) = subplot(2,1,1);
plot(data, '.')
xlim([-5 155])
grid on
ax(2) = subplot(2,1,2)
plot(dt, '.')
grid on
hold on
plot(ind, dt(ind), 'ro')
xlim([-5 155])
linkaxes(ax,'x')

数据通常包含重复点,这使得仅寻找导数中的大变化变得困难。
使用包含的数据集解决此问题的方法是:

cycle_ind = [18 68 116]

谢谢您的帮助

任何帮助将不胜感激。

4

1 回答 1

1

我会尝试过滤数据,然后寻找导数中的符号变化,而不是对其进行阈值化。

B = fir1(8,0.5);
newData = filtfilt(B,1,data);
dt = [0 sign(diff(newData))];
ddt = -[0 diff(dt)];
localMaxima = data(ddt>0);
idx = find(ddt>0);
plot(1:length(data),[data;newData;ddt*max(data)])
于 2013-08-23T16:26:03.393 回答