필터 지우기
필터 지우기

Does fftn do post padding ?

조회 수: 2 (최근 30일)
raheem mian
raheem mian 2020년 2월 7일
편집: David Goodmanson 2020년 2월 8일
x = randi(256, 200,200,200);
x = fftn(x,[256,256,256]);
Is this post padding by 56 ?

답변 (1개)

David Goodmanson
David Goodmanson 2020년 2월 8일
편집: David Goodmanson 2020년 2월 8일
HI raheem,
It's pre padding of the original x array by 56 in each dimension, before the fft. As you can see, the y array has no zeros.
x = randi(256, 200,200,200);
y = fftn(x,[256,256,256]);
any(y(:)==0)
ans =
logical
0
soapbox stuff: Unless the length of an array is a large prime number, padding before doing an fft is almost always a bad idea. It changes the resulting frequency array and can lead to problems representing the frequency domain waveform, among other things.
Certainly with the fft algorithms in use today, padding to length 2^n because of the vaunted speed advantage is mostly a myth. For small problems any speed advantage is negligible. So let's take your example as a medium size problem:
x = randi(256, 200,200,200);
tic
for k = 1:100
y = fftn(x,[256,256,256]);
end
toc
Elapsed time is 18.387219 seconds.
tic
for k = 1:100
y = fftn(x);
end
toc
Elapsed time is 5.873024 seconds.
so padding is faster, but only in the sense that it is 3 times slower.
  댓글 수: 2
raheem mian
raheem mian 2020년 2월 8일
but on the fftn matlab help page it says it applies trailing zeros ?
David Goodmanson
David Goodmanson 2020년 2월 8일
편집: David Goodmanson 2020년 2월 8일
from doc fftn:
Y = fftn(X,sz) truncates X or pads X with trailing zeros before taking the transform ...
I modified the answer above to address the whole idea of padding.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Fourier Analysis and Filtering에 대해 자세히 알아보기

태그

제품


릴리스

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by