peak in fixed interval in findpeaks
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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
Risposta accettata
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)
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!