diff options
Diffstat (limited to 'macros/fft21.sci')
-rw-r--r-- | macros/fft21.sci | 102 |
1 files changed, 57 insertions, 45 deletions
diff --git a/macros/fft21.sci b/macros/fft21.sci index 2f04200..ee73a6b 100644 --- a/macros/fft21.sci +++ b/macros/fft21.sci @@ -1,45 +1,57 @@ -function res = fft21 (A, m, n) -//Calculates the two-dimensional discrete Fourier transform of A using a Fast Fourier Transform algorithm. -//Calling Sequence -//fft2 (A, m, n) -//fft2 (A) -//Parameters -//A: input matrix -//m: number of rows of A to be used -//n: number of columns of A to be used -//Description -//This is an Octave function. -//It performs two-dimentional FFT on the matrix A. m and n may be used specify the number of rows and columns of A to use. If either of these is larger than the size of A, A is resized and padded with zeros. -//If A is a multi-dimensional matrix, each two-dimensional sub-matrix of A is treated separately. -//Examples -//x = [1 2 3; 4 5 6; 7 8 9] -//m = 4 -//n = 4 -//fft21 (A, m, n) -//ans = -// -// 45 + 0i -6 - 15i 15 + 0i -6 + 15i -// -18 - 15i -5 + 8i -6 - 5i 5 - 4i -// 15 + 0i -2 - 5i 5 + 0i -2 + 5i -// -18 + 15i 5 + 4i -6 + 5i -5 - 8i - -funcprot(0); -lhs = argn(1) -rhs = argn(2) -if (rhs < 1 | rhs > 3) -error("Wrong number of input arguments.") -end - -select(rhs) - - case 1 then - res = callOctave("fft2", A) - - case 2 then - error("Wrong number of input arguments.") - - case 3 then - res = callOctave("fft2", A, m, n) - - end -endfunction +/* Description
+ Calculates the two-dimensional discrete Fourier transform of A using a Fast Fourier Transform algorithm.
+ It performs two-dimentional FFT on the matrix A. You can use the variables m and n to specify the number of rows and columns
+ of A that you want to use. If either of these variables is larger than the size of A,
+ then A will be resized, and zeros will be added as padding.
+ If A is a multi-dimensional matrix, the function will treat each two-dimensional sub-matrix of A separately.
+ Calling Sequence
+ fft21 (A)
+ fft21 (A, m, n)
+ Parameters
+ A: input matrix
+ m: number of rows of A to be used
+ n: number of columns of A to be used
+ Examples
+ A = [1 2 3; 4 5 6; 7 8 9]
+ m = 4
+ n = 4
+ fft21 (A, m, n)
+ ans =
+ 45 + 0i -6 - 15i 15 + 0i -6 + 15i
+ -18 - 15i -5 + 8i -6 - 5i 5 - 4i
+ 15 + 0i -2 - 5i 5 + 0i -2 + 5i
+ -18 + 15i 5 + 4i -6 + 5i -5 - 8i */
+function res = fft21 (A, m, n)
+ funcprot(0);
+ lhs = argn(1)
+ rhs = argn(2)
+ if (rhs < 1 | rhs > 3)
+ error("Wrong number of input arguments.")
+ end
+ siz=size(A)
+ len=length(siz)
+ select(rhs)
+ case 1 then
+ if len>2 then
+ last_dim=siz(len)
+ else
+ last_dim=1
+ end
+ res=[]
+ for i=1:last_dim
+ res(:,:,i)=fft(A(:,:,i),-1)
+ end
+ case 2 then
+ error("Wrong number of input arguments.")
+ case 3 then
+ if len>2 then
+ last_dim=siz(len)
+ else
+ last_dim=1
+ end
+ res=[]
+ for i=1:last_dim
+ res(:,:,i)=fft(resize_matrix(A(:,:,i),m,n),-1)
+ end;
+ end
+endfunction
|