Path: news.mathworks.com!not-for-mail
From: "ghasem " <shaban_sadeghi@yahoo.com>
Newsgroups: comp.soft-sys.matlab
Subject: how use from fft in three dimensional domain
Date: Thu, 25 Apr 2013 12:44:10 +0000 (UTC)
Organization: The MathWorks, Inc.
Lines: 27
Message-ID: <klb8eq$lp1$1@newscl01ah.mathworks.com>
Reply-To: "ghasem " <shaban_sadeghi@yahoo.com>
NNTP-Posting-Host: www-06-blr.mathworks.com
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: newscl01ah.mathworks.com 1366893850 22305 172.30.248.38 (25 Apr 2013 12:44:10 GMT)
X-Complaints-To: news@mathworks.com
NNTP-Posting-Date: Thu, 25 Apr 2013 12:44:10 +0000 (UTC)
X-Newsreader: MATLAB Central Newsreader 4223132
Xref: news.mathworks.com comp.soft-sys.matlab:794327

Hi.
I have several 4 dimensional arrays in space-time domain (named as : aux_a,aux_b,...).
in each of them,forth dimension is time and three other dimensions are spatial coordinates.
I want to calculate their DFT for a given frequency interval .but I don't know how implement fftn or faster method in this case.
I wrote following code:
======================
n = 10000;  % number of time steps.
dt = 5e-3;    % sampling time interval
freq = (50:5:300);    % desired frequency interval
% aux_a,b are a predetermined 4d arrays in space-time domain
% [ you suppose aux_a,b,... =rand(3,4,5,n) ,...]
a = zeros(3,4,5,length(freq));
b = zeros(3,4,5,length(freq));
for m = 1:n
    for k = 1:length(freq)
        exp_h = exp(-1j * freq( k )* m * dt);
        a(:,:,:,f) = a(:,:,:,f) + exp_h * aux_a(:,:,:,m);
        b(:,:,:,f) = b(:,:,:,f) + exp_h * aux_b(:,:,:,m);
        ...
    end
end
======================
now suppose I have 22 other 4 dimensional arrays like as b and c in above.and I have to calculate their fourier transform like as above.
this code is very slow.I want to use from fftn or a better method.
but I don't know how implement fftn for this problem.
is there anyone who help me?
thanks...