-
Notifications
You must be signed in to change notification settings - Fork 5
/
estif.jl
113 lines (93 loc) · 2.52 KB
/
estif.jl
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
module estif
#import DSP
import cohenclass
import extif
import polywv
function ifestxvwd(z,ynorm,dx,niter,indfn=NaN,isf=NaN,ief=NaN,fin=NaN,tfrsw=false)
if isnan(fin[1])
nf=size(z)
else
nf=length(fin)
end
if isnan(isf) isf=1 end
if isnan(ief) ief=nf end
if isnan(indfn[1])
tfrn=cohenclass.tfrwv(z,NaN,NaN,NaN,NaN,1)
indfn=extif.maxif(real(tfrn),isf,ief)
end
for it=1:niter
zhat=exp(im*cumsum(indfn)*ynorm*dx)
if isnan(fin[1])
tfrn=cohenclass.tfrwv(z,zhat,NaN,NaN,NaN,1)
indfn=extif.maxif(abs(tfrn),isf,ief)
else
tfrn=cohenclass.tfrwv(z,zhat,NaN,fin,NaN,0);
indfna=extif.maxif(abs(tfrn),isf,ief)
indfn=fin[round(Int,indfna)]
end
end
if tfrsw
return indfn, tfrn
else
return indfn
end
end
function ifestxpvwd(z,ynorm,dx,niter,indfn=NaN,isf=NaN,ief=NaN,fin=NaN,nwindow=4,tfrsw=false)
if isnan(fin[1])
nf=size(z)
else
nf=length(fin)
end
if isnan(isf) isf=1 end
if isnan(ief) ief=nf end
if isnan(indfn[1])
tfrn=cohenclass.tfrpwv(z,NaN,NaN,NaN,NaN,1)
indfn=extif.maxif(real(tfrn),isf,ief)
end
for it=1:niter
zhat=exp(im*cumsum(indfn*ynorm*dx))
if isnan(fin[1])
tfrn=cohenclass.tfrpwv(z,zhat,NaN,NaN,NaN,1,"mean",nwindow)
indfn=extif.maxif(abs(tfrn),isf,ief)
else
tfrn=cohenclass.tfrpwv(z,zhat,NaN,fin,NaN,NaN,0,"mean",nwindow);
indfna=extif.maxif(abs(tfrn),isf,ief)
indfn=fin[round(Int,indfna)]
end
end
if tfrsw
return indfn, tfrn
else
return indfn
end
end
function ifestxpowv(z,ynorm,dx,niter,indfn=NaN,isf=NaN,ief=NaN,fin=NaN,nwindow=4,tfrsw=false)
if isnan(fin[1])
nf=size(z)
else
nf=length(fin)
end
if isnan(isf) isf=1 end
if isnan(ief) ief=nf end
if isnan(indfn[1])
tfrn=polywv.tfrpowv(z,NaN,NaN,NaN,NaN,1)
indfn=extif.maxif(real(tfrn),isf,ief)
end
for it=1:niter
zhat=exp(im*cumsum(indfn)*ynorm*dx)
if isnan(fin[1])
tfrn=polywv.tfrpowv(z,zhat,NaN,NaN,0)
indfn=extif.maxif(abs(tfrn),isf,ief)
else
tfrn=polywv.tfrpowv(z,zhat,NaN,fin,NaN,0)
indfna=extif.maxif(abs(tfrn),isf,ief)
indfn=fin[round(Int,indfna)]
end
end
if tfrsw
return indfn, tfrn
else
return indfn
end
end
end