peak in fixed interval in findpeaks

2 visualizzazioni (ultimi 30 giorni)
ARPITA MONDAL
ARPITA MONDAL il 28 Lug 2020
Commentato: ARPITA MONDAL il 28 Lug 2020
How can I get peak in a fixed interval in findpeaks?
load("matlab_peak.mat") ;
x=V1_1_new ;
y=y1_1_new ;
[pks,idx] = findpeaks(y) ;
plot(x,y)
hold on
plot(x(idx),y(idx),'*r')
Here, I am getting 7 peaks but I want more peaks(11 peaks) ,Then what should I do?
x= V1_1_new is the voltage value in volt.
In x vs y plot if I want peak in every 30mv distance then what should I do?
  1 Commento
KSSV
KSSV il 28 Lug 2020
There are some options in the function findpeaks. Read the documentation.

Accedi per commentare.

Risposta accettata

dpb
dpb il 28 Lug 2020
There simply isn't much in the way of a peak to find -- I can't discern enough even by eye to count to eleven in that trace...
There's something funky going on with V1_1_new, though...
>> findpeaks(y1_1_new,V1_1_new)
Error using findpeaks
Expected X to be strictly increasing.
Error in findpeaks>parse_inputs (line 240)
validateattributes(Xin,{'double','single'},{'real','finite','vector','increasing'},'findpeaks','X');
Error in findpeaks (line 136)
= parse_inputs(isInMATLAB,Yin,varargin{:});
>> find(diff(V1_1_new)<=0)
ans =
248
316
>>
Rearrange in sorted order and you could help findpeaks out a little by detrend ing the trace to remove the overall rising trend.
>> [~,isrt]=sort(V1_1_new,'ascend');
>> [pks,idpk]=findpeaks(detrend(y1_1_new(isrt)),V1_1_new(isrt))
pks =
-0.2648
-0.6139
-0.6769
-0.6294
1.7529
1.4177
1.4740
1.6663
1.4735
1.4724
-0.1823
idpk =
3.8461
3.8832
3.8942
3.9044
3.9512
3.9637
3.9717
3.9809
3.9943
3.9953
4.0294
>>
Manages to find 10. Even visually I couldn't tell you where one would identify yet another...if do the above or something similar, would use the indices to go back and retrieve the original magnitudes if they are of interest.

Più risposte (0)

Tag

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by