-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathperiods.m
47 lines (39 loc) · 1.03 KB
/
periods.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
function [peakfpf,fmean,fm,mpeak] = periods(ef,fr,delf)
% compute peak frequency
emax = 0;
peakfpf = 0;
mpeak = 0;
etot = 0;
fmean = 0;
etot = sum(ef.*delf);
fmean = sum((ef.*delf)./fr);
ii = find(ef == max(ef));
mpeak = ii(1);
if mpeak > 1 & mpeak < length(fr)
fmean = etot / (fmean + 1.0e-10);
fm = fr(mpeak);
peakfpf = fr(mpeak);
mpk = mpeak;
mpl1 = mpk + 1;
mpm1 = mpk - 1;
eneck = ef(mpl1) + ef(mpk) + ef(mpm1);
if eneck > 1.0e-05
v1 = (fr(mpk) - fr(mpl1)) * (fr(mpm1) - fr(mpk));
v2 = (ef(mpm1) - ef(mpl1)) * (fr(mpm1) - fr(mpk))/ ...
(fr(mpm1) - fr(mpl1));
if (v2 ~= 0)
a = (ef(mpm1) - ef(mpk) - v2) / v1;
b = (ef(mpm1) -ef(mpl1)) / (fr(mpm1) - fr(mpl1)) ...
- a * (fr(mpm1) + fr(mpl1));
if a ~= 0
peakfpf = -0.5 * b / a;
end
end
end
else
peakfpf = -999.;
fmean = -999;
fm = -999;
mpeak = -1;
end
end