You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+49-5Lines changed: 49 additions & 5 deletions
Original file line number
Diff line number
Diff line change
@@ -75,6 +75,48 @@ is valid for the half-open square `(α,β) ∈ (-1/2,1/2]^2`. Therefore, the fas
75
75
when the parameters are inside. If the parameters `(α,β)` are not exceptionally beyond the square,
76
76
then increment/decrement operators are used with linear complexity (and linear conditioning) in the degree.
77
77
78
+
## Nonuniform fast Fourier transforms
79
+
80
+
The NUFFTs are implemented thanks to [Alex Townsend](https://github.com/ajt60gaibb):
81
+
-`nufft1` assumes uniform samples and noninteger frequencies;
82
+
-`nufft2` assumes nonuniform samples and integer frequencies;
83
+
-`nufft3 ( = nufft)` assumes nonuniform samples and noninteger frequencies;
84
+
-`inufft1` inverts an `nufft1`; and,
85
+
-`inufft2` inverts an `nufft2`.
86
+
87
+
Here is an example:
88
+
```julia
89
+
julia> n =10^4;
90
+
91
+
julia> c =complex(rand(n));
92
+
93
+
julia> ω =collect(0:n-1) +rand(n);
94
+
95
+
julia>nufft1(c, ω, eps());
96
+
97
+
julia> p1 =plan_nufft1(ω, eps());
98
+
99
+
julia>@time p1*c;
100
+
0.002383 seconds (6 allocations:156.484 KiB)
101
+
102
+
julia> x = (collect(0:n-1) +3rand(n))/n;
103
+
104
+
julia>nufft2(c, x, eps());
105
+
106
+
julia> p2 =plan_nufft2(x, eps());
107
+
108
+
julia>@time p2*c;
109
+
0.001478 seconds (6 allocations:156.484 KiB)
110
+
111
+
julia>nufft3(c, x, ω, eps());
112
+
113
+
julia> p3 =plan_nufft3(x, ω, eps());
114
+
115
+
julia>@time p3*c;
116
+
0.058999 seconds (6 allocations:156.484 KiB)
117
+
118
+
```
119
+
78
120
## The Padua Transform
79
121
80
122
The Padua transform and its inverse are implemented thanks to [Michael Clarke](https://github.com/MikeAClarke). These are optimized methods designed for computing the bivariate Chebyshev coefficients by interpolating a bivariate function at the Padua points on `[-1,1]^2`.
@@ -87,7 +129,7 @@ julia> N = div((n+1)*(n+2),2);
87
129
julia> v =rand(N); # The length of v is the number of Padua points
@@ -126,10 +168,12 @@ As with other fast transforms, `plan_sph2fourier` saves effort by caching the pr
126
168
127
169
[2] N. Hale and A. Townsend. <ahref="http://dx.doi.org/10.1137/130932223">A fast, simple, and stable Chebyshev—Legendre transform using and asymptotic formula</a>, *SIAM J. Sci. Comput.*, **36**:A148—A167, 2014.
128
170
129
-
[3] J. Keiner. <ahref="http://dx.doi.org/10.1137/070703065">Computing with expansions in Gegenbauer polynomials</a>, *SIAM J. Sci. Comput.*, **31**:2151—2171, 2009.
171
+
[3] J. Keiner. <ahref="http://dx.doi.org/10.1137/070703065">Computing with expansions in Gegenbauer polynomials</a>, *SIAM J. Sci. Comput.*, **31**:2151—2171, 2009.
172
+
173
+
[4] D. Ruiz—Antolín and A. Townsend. <ahref="https://arxiv.org/abs/1701.04492">A nonuniform fast Fourier transform based on low rank approximation</a>, arXiv:1701.04492, 2017.
130
174
131
-
[4] R. M. Slevinsky. <ahref="https://doi.org/10.1093/imanum/drw070">On the use of Hahn's asymptotic formula and stabilized recurrence for a fast, simple, and stable Chebyshev—Jacobi transform</a>, in press at *IMA J. Numer. Anal.*, 2017.
175
+
[5] R. M. Slevinsky. <ahref="https://doi.org/10.1093/imanum/drw070">On the use of Hahn's asymptotic formula and stabilized recurrence for a fast, simple, and stable Chebyshev—Jacobi transform</a>, in press at *IMA J. Numer. Anal.*, 2017.
132
176
133
-
[5] R. M. Slevinsky. <ahref="https://arxiv.org/abs/1705.05448">Fast and backward stable transforms between spherical harmonic expansions and bivariate Fourier series</a>, arXiv:1705.05448, 2017.
177
+
[6] R. M. Slevinsky. <ahref="https://arxiv.org/abs/1705.05448">Fast and backward stable transforms between spherical harmonic expansions and bivariate Fourier series</a>, arXiv:1705.05448, 2017.
134
178
135
-
[6] A. Townsend, M. Webb, and S. Olver. <ahref="https://doi.org/10.1090/mcom/3277">Fast polynomial transforms based on Toeplitz and Hankel matrices</a>, in press at *Math. Comp.*, 2017.
179
+
[7] A. Townsend, M. Webb, and S. Olver. <ahref="https://doi.org/10.1090/mcom/3277">Fast polynomial transforms based on Toeplitz and Hankel matrices</a>, in press at *Math. Comp.*, 2017.
0 commit comments