Using fft and ifft with less frequencies than input points

7 views (last 30 days)
I want to use fft and ifft in the context of heat equation. Therefore the grid needs to be refined, but I dont want to use as many coefficients in the fft:
%Grid
Nx = 10001;
dx = L/(Nx-1);
x = linspace(0,L,Nx)';
%Function
f = @(x) rectangularPulse(0.5, 1.5, x);
f_values = arrayfun(f,x);
u0 = ifft(fft(f_values)); %Takes very long
What I would want to do, is to insert an N, f.e. N=100, but get an array 10001x1.
Thanks.

Answers (1)

Matt J
Matt J on 27 Feb 2025
Edited: Matt J on 27 Feb 2025
What I would want to do, is to insert an N, f.e. N=100, but get an array 10001x1.
%Grid
Nx = 100;
L = 10;
dx = L/(Nx-1);
x = linspace(0,L,Nx)';
%Function
f = @(x) rectangularPulse(0.5, 1.5, x);
f_values = arrayfun(f,x);
u0 = ifft(fft(f_values),10001);
whos u0
Name Size Bytes Class Attributes u0 10001x1 160016 double complex

Categories

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

Tags

Products


Release

R2024a

Community Treasure Hunt

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

Start Hunting!