在 MATLAB 中计算信号中的所有峰峰值幅度
Calculate all peak-to-peak amplitudes in a signal in MATLAB
我已经从信号(最大值和最小值)中提取了所有峰值,现在有 2 个包含它们的电压值的向量和两个包含它们的索引的向量。
我想计算此信号的所有不同峰峰值(最小值到最大值以及最大值到最小值)值。最终,这是找到该信号的最大峰峰值。因为信号在漂移,而我不会 'allowed' 对其进行高通滤波,这是我能想到的找到该值的唯一方法。然而,我正在绞尽脑汁去实现它。
对于构建此代码或实现我的目标的其他想法,我将不胜感激。非常感谢。
这是我的数据点示例。 PosVol
是正峰电压,NegVol
是负峰电压。 PosInd
和NegInd
分别是索引。
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
值实际上是负电压。
我已经从信号(最大值和最小值)中提取了所有峰值,现在有 2 个包含它们的电压值的向量和两个包含它们的索引的向量。
我想计算此信号的所有不同峰峰值(最小值到最大值以及最大值到最小值)值。最终,这是找到该信号的最大峰峰值。因为信号在漂移,而我不会 'allowed' 对其进行高通滤波,这是我能想到的找到该值的唯一方法。然而,我正在绞尽脑汁去实现它。
对于构建此代码或实现我的目标的其他想法,我将不胜感激。非常感谢。
这是我的数据点示例。 PosVol
是正峰电压,NegVol
是负峰电压。 PosInd
和NegInd
分别是索引。
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
值实际上是负电压。