FFT of 3D array in MATLAB (2024)

41 views (last 30 days)

Show older comments

Janee on 6 Aug 2024 at 5:32

  • Link

    Direct link to this question

    https://www-europe.mathworks.com/matlabcentral/answers/2143236-fft-of-3d-array-in-matlab

  • Link

    Direct link to this question

    https://www-europe.mathworks.com/matlabcentral/answers/2143236-fft-of-3d-array-in-matlab

Commented: Janee on 7 Aug 2024 at 3:01

Accepted Answer: Matt J

Open in MATLAB Online

I am trying to understand how the FFT of different directions in MATLAB works to reproduce in C/C++ instead.

So far I have the following simple example in MATLAB:

clearvars; clc; close all;

%3D FFT test

Nx = 8;

Ny = 4;

Nz= 6;

Lx =16;

Ly = 6;

dx = Lx/Nx;

dy = Ly/Ny;

%-----------

xi_x = (2*pi)/Lx;

yi_y = (2*pi)/Ly;

xi = ((0:Nx-1)/Nx)*(2*pi);

yi = ((0:Ny-1)/Ny)*(2*pi);

x = xi/xi_x;

y = yi/yi_y;

zlow = 0; %a

zupp =6; %b

Lz = (zupp-zlow);

eta_zgl = 2/Lz;

[D,zgl] = cheb(Nz);

zgl = (1/2)*(((zupp-zlow)*zgl) + (zupp+zlow));

[X,Z,Y] = meshgrid(x,zgl,y); %this gives 3d grid with z-by-x-by-y size (i.e. ZXY)

%ICs

A = 2*pi / Lx;

B = 2*pi / Ly;

u = (Z-zlow) .* (Z-zupp) .* sin(A*X).* sin(B*Y);

uh1 =(fft(u,[],3));%ZXY

uh2 =(fft(u,[],1));%ZXY

uh3 =(fft(u,[],2));%ZXY

So, in C/C++ I have a 3D tensor with (Nz+1) rows and Nx coumns and Ny matrices and taking the 1D FFT along each "row" of u returns the same results as the following in MATLAB:

uh3 =(fft(u,[],2));%ZXY

While taking the 1D FFT of u along each column of u in C/C++ returns the same result as the following in MATLAB:

uh2 =(fft(u,[],1));%ZXY

Then my question is what does this 1D FFT represent? and how should I represent it in C/C++?

uh1 =(fft(u,[],3));%ZXY

The cheb(N) function is:

function [ D, x ] = cheb ( N )

if ( N == 0 )

D = 0.0;

x = 1.0;

return

end

x = cos ( pi * ( 0 : N ) / N )';

c = [ 2.0; ones(N-1,1); 2.0 ] .* (-1.0).^(0:N)';

dX = X - X';

% Set the off diagonal entries.

D =( c * (1.0 ./ c )' ) ./ ( dX + ( eye ( N + 1 ) ) );

% Diagonal entries.

D = D - diag ( sum ( D' ) );

return

end

0 Comments

Show -2 older commentsHide -2 older comments

Sign in to comment.

Sign in to answer this question.

Accepted Answer

Matt J on 6 Aug 2024 at 5:40

  • Link

    Direct link to this answer

    https://www-europe.mathworks.com/matlabcentral/answers/2143236-fft-of-3d-array-in-matlab#answer_1495056

  • Link

    Direct link to this answer

    https://www-europe.mathworks.com/matlabcentral/answers/2143236-fft-of-3d-array-in-matlab#answer_1495056

Why reinvent the wheel. Why not just use the open source FFTW C/C++ library (which Matlab is based on).

In any case, the mathematical interpretation of Matlab's 1D FFT is in the documentation,

https://www.mathworks.com/help/matlab/ref/fft.html#buuutyt-5

9 Comments

Show 7 older commentsHide 7 older comments

Janee on 6 Aug 2024 at 5:44

Direct link to this comment

https://www-europe.mathworks.com/matlabcentral/answers/2143236-fft-of-3d-array-in-matlab#comment_3230821

  • Link

    Direct link to this comment

    https://www-europe.mathworks.com/matlabcentral/answers/2143236-fft-of-3d-array-in-matlab#comment_3230821

I am using the FFTW library in C++ and I have tested Eigen FFT functions as well. FFTW library is not super user-friendly honestly and I have tried to reproduce the FFT MATLAB output to no avail. Thanks.

Matt J on 6 Aug 2024 at 5:50

Direct link to this comment

https://www-europe.mathworks.com/matlabcentral/answers/2143236-fft-of-3d-array-in-matlab#comment_3230826

  • Link

    Direct link to this comment

    https://www-europe.mathworks.com/matlabcentral/answers/2143236-fft-of-3d-array-in-matlab#comment_3230826

Edited: Matt J on 6 Aug 2024 at 5:52

Is the difference more than just a global scaling factor? We cannot assess the problem without examples.

Janee on 6 Aug 2024 at 5:55

Direct link to this comment

https://www-europe.mathworks.com/matlabcentral/answers/2143236-fft-of-3d-array-in-matlab#comment_3230831

  • Link

    Direct link to this comment

    https://www-europe.mathworks.com/matlabcentral/answers/2143236-fft-of-3d-array-in-matlab#comment_3230831

Open in MATLAB Online

There's no difference. It is just that I am not sure what "3" here represents in

uh1 =(fft(u,[],3));%ZXY

Like, I get that it supposed to be along "y" direction, but what does that really mean? for a 3D tensor u with nz+1 rows, nx columns and y matrices what does 1D FFT of u along y mean (i.e. 3)?

Janee on 6 Aug 2024 at 5:56

Direct link to this comment

https://www-europe.mathworks.com/matlabcentral/answers/2143236-fft-of-3d-array-in-matlab#comment_3230836

  • Link

    Direct link to this comment

    https://www-europe.mathworks.com/matlabcentral/answers/2143236-fft-of-3d-array-in-matlab#comment_3230836

As the link you posted explains FFT along each columns is (u,[],1) and FFT along each row is (u,[],2) then what is fft(u,[],3)?

Matt J on 6 Aug 2024 at 5:58

Direct link to this comment

https://www-europe.mathworks.com/matlabcentral/answers/2143236-fft-of-3d-array-in-matlab#comment_3230841

  • Link

    Direct link to this comment

    https://www-europe.mathworks.com/matlabcentral/answers/2143236-fft-of-3d-array-in-matlab#comment_3230841

Edited: Matt J on 6 Aug 2024 at 5:59

Since you understand that fft(u,[],1) and fft(u,[],2) are the same operation (along different dimensions), why do you think there is a different meaning to fft(u,[],3)? There isn't.

Matt J on 6 Aug 2024 at 6:02

Direct link to this comment

https://www-europe.mathworks.com/matlabcentral/answers/2143236-fft-of-3d-array-in-matlab#comment_3230846

  • Link

    Direct link to this comment

    https://www-europe.mathworks.com/matlabcentral/answers/2143236-fft-of-3d-array-in-matlab#comment_3230846

Edited: Matt J on 6 Aug 2024 at 6:02

Open in MATLAB Online

It is the same as if you did it in 3 steps:

tmp=shiftdim(u,2);

Tmp=fft(tmp,[],1);

uh3=shiftdim( Tmp , -2);

Janee on 6 Aug 2024 at 6:04

Direct link to this comment

https://www-europe.mathworks.com/matlabcentral/answers/2143236-fft-of-3d-array-in-matlab#comment_3230851

  • Link

    Direct link to this comment

    https://www-europe.mathworks.com/matlabcentral/answers/2143236-fft-of-3d-array-in-matlab#comment_3230851

So, fft(u,[],3) is just 1D fft along each row of u?

Matt J on 6 Aug 2024 at 7:40

Direct link to this comment

https://www-europe.mathworks.com/matlabcentral/answers/2143236-fft-of-3d-array-in-matlab#comment_3230906

  • Link

    Direct link to this comment

    https://www-europe.mathworks.com/matlabcentral/answers/2143236-fft-of-3d-array-in-matlab#comment_3230906

Edited: Matt J on 7 Aug 2024 at 0:40

No, it is the fft along each vector u(i,j,:).

Janee on 7 Aug 2024 at 3:01

Direct link to this comment

https://www-europe.mathworks.com/matlabcentral/answers/2143236-fft-of-3d-array-in-matlab#comment_3231654

  • Link

    Direct link to this comment

    https://www-europe.mathworks.com/matlabcentral/answers/2143236-fft-of-3d-array-in-matlab#comment_3231654

This line "fft along each u(i,j,:)" actually solves my issue and makes more sense!

Sign in to comment.

More Answers (0)

Sign in to answer this question.

See Also

Categories

MATLABMathematicsFourier Analysis and Filtering

Find more on Fourier Analysis and Filtering in Help Center and File Exchange

Tags

  • meshgrid
  • fft
  • numerical libraries
  • c/c++

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

An Error Occurred

Unable to complete the action because of changes made to the page. Reload the page to see its updated state.


FFT of 3D array in MATLAB (12)

Select a Web Site

Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .

You can also select a web site from the following list

Americas

  • América Latina (Español)
  • Canada (English)
  • United States (English)

Europe

  • Belgium (English)
  • Denmark (English)
  • Deutschland (Deutsch)
  • España (Español)
  • Finland (English)
  • France (Français)
  • Ireland (English)
  • Italia (Italiano)
  • Luxembourg (English)
  • Netherlands (English)
  • Norway (English)
  • Österreich (Deutsch)
  • Portugal (English)
  • Sweden (English)
  • Switzerland
    • Deutsch
    • English
    • Français
  • United Kingdom(English)

Asia Pacific

  • Australia (English)
  • India (English)
  • New Zealand (English)
  • 中国
  • 日本Japanese (日本語)
  • 한국Korean (한국어)

Contact your local office

FFT of 3D array in MATLAB (2024)
Top Articles
Hamilton Resident Wins $50K on Ohio Lottery Scratch-off
The Ohio Lottery :: Lottery Cash & Coupons
Peralta's Mexican Restaurant Grand Saline Menu
Pollen Levels Richmond
We Will Collide Someday Novel
Jack Daniels Pop Tarts
Craigslist Worcester Massachusetts: Your Guide to the City's Premier Marketplace - First Republic Craigslist
Bank Of America Operating Hours Today
5417873087
Ge Tracker Awakener Orb
Japan’s Dagashi Treats: A Tasty Trip Down Memory Lane – Umami bites
Housing Intranet Unt
April 7 Final Jeopardy
High school football: Photos from the top Week 3 games Friday
11 Shows Your Mom Loved That You Should Probably Revisit
Uga Im Leagues
T33N Leak Age 5-17
Who are Yasmin Le Bon Parents? Meet Iradj Parvaneh and Patricia Parvaneh
What Time Is First Light Tomorrow Morning
Cocaine Bear Showtimes Near Harkins Cerritos
Layla Rides Codey
Meritain Prior Authorization List
Merrick Rv Loans
Umn Biology
Southern Food Buffet Near Me
Aunt Nettes Menu
پنل کاربری سایت همسریابی هلو
Small Party Hall Near Me
Wo liegt Sendenhorst? Lageplan und Karte
Western Lake Erie - Lake Erie and Lake Ontario
Www.playgd.mobi Wallet
Philasd Zimbra
What Auto Parts Stores Are Open
Black Adam Showtimes Near Cinemark Texarkana 14
Wocs Failure Rate
Melanie, Singer Who Performed at Woodstock and Topped Charts With ‘Brand New Key,’ Dies at 76
Dinar Guru Iraqi Dinar
Dom Tradingview
Meg 2: The Trench Showtimes Near Phoenix Theatres Laurel Park
Jeld Wen Okta Com Login
How Old Is Ted Williams Fox News Contributor
Tamu Registration Worksheet
Plusword 358
55000 Pennies To Dollars
Carros Jeep Wrangler Tachira | MercadoLibre 📦
Builders Best Do It Center
Where To Find Mega Ring In Pokemon Radical Red
Craigslist West Valley
18 Awesome Things to do in Fort Walton Beach Florida 2024 - The Wanderlust Within
my Control Vitality Female Support Complex (10 ml)
Choices’ summer movie preview
49 CFR Part 581 -- Bumper Standard
Latest Posts
Article information

Author: Edwin Metz

Last Updated:

Views: 6712

Rating: 4.8 / 5 (78 voted)

Reviews: 93% of readers found this page helpful

Author information

Name: Edwin Metz

Birthday: 1997-04-16

Address: 51593 Leanne Light, Kuphalmouth, DE 50012-5183

Phone: +639107620957

Job: Corporate Banking Technician

Hobby: Reading, scrapbook, role-playing games, Fishing, Fishing, Scuba diving, Beekeeping

Introduction: My name is Edwin Metz, I am a fair, energetic, helpful, brave, outstanding, nice, helpful person who loves writing and wants to share my knowledge and understanding with you.