在 MATLAB 中计算信号中的所有峰峰值幅度

Calculate all peak-to-peak amplitudes in a signal in MATLAB

我已经从信号(最大值和最小值)中提取了所有峰值,现在有 2 个包含它们的电压值的向量和两个包含它们的索引的向量。

我想计算此信号的所有不同峰峰值(最小值到最大值以及最大值到最小值)值。最终,这是找到该信号的最大峰峰值。因为信号在漂移,而我不会 'allowed' 对其进行高通滤波,这是我能想到的找到该值的唯一方法。然而,我正在绞尽脑汁去实现它。

对于构建此代码或实现我的目标的其他想法,我将不胜感激。非常感谢。

这是我的数据点示例。 PosVol 是正峰电压,NegVol 是负峰电压。 PosIndNegInd分别是索引。

PosVol = [ 0.0437   0.1680  0.2089  0.5719  0.9146  0.8306  0.8646 1.0000  0.6541  0.1628 -0.3038 -0.0990   0.3602   0.4707  0.2968  0.1793];
NegVol = [ 1.2838   1.6351  1.5026  1.1441  1.2331  1.2732  0.9188  0.1841  0.0412  0.6215  1.1444  1.0828  0.5687   0.2590   0.3917   0.5605];
PosInd = [ 1533  4057  6609 9038  11426 13831  16403  19009  21206 23609 27015   29758   32294  34789   37147   39642];
NegInd = [ 2304 4733 7283  9768  12291  14817   17397  20105   22899    25851  28218   30706  33317   36211  38628    41123];

我建议,为了获得所有 - 比方说下降侧翼 - 峰值到峰值,您迭代正指数并执行:

PeakPeakFalling = zeros(1,size(PosInd,2));
for ii=1:size(PosInd,2)
    neg_index = find(NegInd(1,:)>PosInd(1,ii),1);
    PeakPeakFalling(1,ii)=PosVol(1,ii)+NegVol(1,neg_index);
end

这会找到下一个最小值的下一个索引,并以此计算值的差异。

以同样的方式,您也可以构建 PeakPeakRising 向量,然后只找到所有峰峰值的最大值。我在这里假设 NegVol 值实际上是负电压。