octave-bug-tracker
[Top][All Lists]

[Octave-bug-tracker] [bug #43673] fft() gives incorrect result for 3-dim

 From: count Subject: [Octave-bug-tracker] [bug #43673] fft() gives incorrect result for 3-dim array with singleton 3rd dimension Date: Fri, 09 Jan 2015 20:23:44 +0000 User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0

```Follow-up Comment #11, bug #43673 (project octave):

Thank you for your reply! I just have no experience of contributing code to a
project, and don't know how the whole process flow go. (Should I join the

The dimensions resized (as you pointed out) because I want to deal with these
cases (and the expected results):

> a = [1 2;3 4];
> fftlen=0; fft( a, fftlen, 3)
ans = [](2x2x0)
> fftlen=1; fft( a, fftlen, 3)
ans =

1   2
3   4

> fftlen=2; fft( a, fftlen, 3)
ans =

ans(:,:,1) =

1   2
3   4

ans(:,:,2) =

1   2
3   4

Note the "a" in the code could come from "a=b(2,2,1:1)", so this 2-dims to
3-dims transform is not weird.

So, except for fftlen==1, I have to resize the dimensions, since the result
has dimensions like that.

Of course, these are trival cases of Fourier Transform. Here I choose a way
that fix the bug with least code, instead of treat these cases specially. Not
100% sure if this is the right thing to do.
Oh, Maybe I shoud mension these concerns when providing the patch.

For dNDarray.cc, we don't need to worry the resize of dimensions because there
is no the "N" parameter (fft length) there

-- Loadable Function:  fft (X, N, DIM)
v.s
ComplexNDArray
NDArray::fourier (int dim) const

So for the case of "dim >= dims.length ()", the dNDarray.cc code is always
doing "fft (X, 1, DIM)", which is the special case mensioned above
(fftlen==1). Return the result immediately is clearly more understandable than
fix the index range logic in NDArray::fourier().

_______________________________________________________

<http://savannah.gnu.org/bugs/?43673>

_______________________________________________
Message sent via/by Savannah
http://savannah.gnu.org/

```