I have an array A of 2-`SVectors`

. I’d like to apply `fft`

component-wise, namely, something like `fft(A[:,:][1])`

and` fft(A[:,:][2])`

and put them together again as nested array of vectors. It is best if this can be done in-place, namely, through something like `plan_fft!`

. Is there a natural way of doing this? I can use `getindex.(A,1)`

but this cannot generate a “view” to allow in-place operations.

I found a solution

```
A_r = reinterpret(reshape,eltype(A[1]),A)
fft!(A_r,(2,3))
```

Of course `eltype(A)`

should be of some complex float type to allow in-place fft.

Update: here is an example: BTW,` reinterpret(reshape, ... )`

only works for Julia 1.6 and above

```
julia> using LinearAlgebra
julia> using StaticArrays
julia> using FFTW
julia> N=10; M=20;
julia> vf=[@SVector rand(ComplexF64,2) for n in 1:N, m=1:M];
julia> vf_copy=deepcopy(vf);
julia> vfr=reinterpret(reshape,eltype(eltype(vf)),vf);
julia> fft!(vfr,(2,3));
julia> fft_vf1=fft(getindex.(vf_copy,1));
julia> norm(fft_vf1-getindex.(vf,1))
0.0
julia> fft_vf2=fft(getindex.(vf_copy,2));
julia> norm(fft_vf2-getindex.(vf,2))
0.0
```

1 Like

@jinml, could you complete your example with some fake input data, to make it useful to others?

Thanks.