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.mathworks.com/matlabcentral/answers/2143236-fft-of-3d-array-in-matlab

  • Link

    Direct link to this question

    https://www.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.mathworks.com/matlabcentral/answers/2143236-fft-of-3d-array-in-matlab#answer_1495056

  • Link

    Direct link to this answer

    https://www.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.mathworks.com/matlabcentral/answers/2143236-fft-of-3d-array-in-matlab#comment_3230821

  • Link

    Direct link to this comment

    https://www.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.mathworks.com/matlabcentral/answers/2143236-fft-of-3d-array-in-matlab#comment_3230826

  • Link

    Direct link to this comment

    https://www.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.mathworks.com/matlabcentral/answers/2143236-fft-of-3d-array-in-matlab#comment_3230831

  • Link

    Direct link to this comment

    https://www.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.mathworks.com/matlabcentral/answers/2143236-fft-of-3d-array-in-matlab#comment_3230836

  • Link

    Direct link to this comment

    https://www.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.mathworks.com/matlabcentral/answers/2143236-fft-of-3d-array-in-matlab#comment_3230841

  • Link

    Direct link to this comment

    https://www.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.mathworks.com/matlabcentral/answers/2143236-fft-of-3d-array-in-matlab#comment_3230846

  • Link

    Direct link to this comment

    https://www.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.mathworks.com/matlabcentral/answers/2143236-fft-of-3d-array-in-matlab#comment_3230851

  • Link

    Direct link to this comment

    https://www.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.mathworks.com/matlabcentral/answers/2143236-fft-of-3d-array-in-matlab#comment_3230906

  • Link

    Direct link to this comment

    https://www.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.mathworks.com/matlabcentral/answers/2143236-fft-of-3d-array-in-matlab#comment_3231654

  • Link

    Direct link to this comment

    https://www.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
Rockford Scanner.com
Goprogram Login Tn
Wal-Mart 2516 Directory
Fantasy football rankings 2024: Sleepers, breakouts, busts from model that called Deebo Samuel's hard NFL year
Ffxiv Ixali Lightwing
Gateway Login Georgia Client Id
Dyi Urban Dictionary
Who is on the FBI Most Wanted list cryptocurrency?
Santa Maria Cars Craigslist
Unveiling The Voice Behind Maui: The Actor Behind The Demigod
Momokun Leaked Controversy - Champion Magazine - Online Magazine
Bomei Massage
Stanley Steemer Medford Oregon
J/99 – der neue Hochseerenner
Lima Crime Stoppers
Epay. Medstarhealth.org
Worlds Hardest Game Tyrone
Lufkin Isd Calendar
Juanita Swink Hudson
Kamala Harris, Donald Trump debate prompts major endorsem*nt, Fox News invitation for a 2nd face-off
Hdmovie 2
New York (NY) Lottery - Winning Numbers & Results
Selfservice Bright Lending
Sloansmoans Many
Craigslist Vt Heavy Equipment - Craigslist Near You
Ella Phipps Haughton
Sams Gas Price Garland Tx
Maurice hat ein echtes Aggressionsproblem
JetBlue, Spirit end $3.8 billion merger agreement after losing antitrust suit
Theatervoorstellingen in Roosendaal, het complete aanbod.
Chicken Coop Brookhaven Ms
Kare11.Com Contests
Bing Chilling Copypasta - Ricky Spears
Cbs Sportsline Fantasy Rankings
Krunker.io . Online Games . BrightestGames.com
Assume The Slave Position Natashas Bedroom
Shiny Flower Belinda
Supercopbot Keywords
Hobby Lobby Locations Near Me
Shs Games 1V1 Lol
John Deere 7 Iron Deck Parts Diagram
9294027542
Experity Installer
Strange World Showtimes Near Amc Marquis 16
Limestone Bank Hillview
Viduthalai Movierulz
Realidades 2 Capitulo 2B Answers
Russia Ukraine war live: Starmer meets Biden at White House but no decision on Ukraine missiles
Ebony Ts Facials
13364 Nw 42Nd Street
Love In Orbit Manga Buddy
Horoskopi Koha
Latest Posts
Article information

Author: Velia Krajcik

Last Updated:

Views: 6704

Rating: 4.3 / 5 (74 voted)

Reviews: 89% of readers found this page helpful

Author information

Name: Velia Krajcik

Birthday: 1996-07-27

Address: 520 Balistreri Mount, South Armand, OR 60528

Phone: +466880739437

Job: Future Retail Associate

Hobby: Polo, Scouting, Worldbuilding, Cosplaying, Photography, Rowing, Nordic skating

Introduction: My name is Velia Krajcik, I am a handsome, clean, lucky, gleaming, magnificent, proud, glorious person who loves writing and wants to share my knowledge and understanding with you.