필터 지우기
필터 지우기

ifft output is complex?

조회 수: 23 (최근 30일)
ben howey
ben howey 2018년 8월 31일
편집: Matt J 2018년 8월 31일
I have a time series (x). I have taken the fft of the time series (X). I want to shift the entire series, or in the future only certain frequency components, by phase shift (theta). I have changed the complex numbers of X to alter the angle whilst conserving the abs(X). I then ifft the output (X2) and I get a complex output and im not sure why?
Thanks
if true
for m=2:length(X)
n=X(m);
r=real(n);
im=imag(n);
a=angle(n);
a2=a+pi/2;
r2=(r*cos(a2))/cos(a);
im2=tan(a2)*r2;
z=complex(r2,im2);
X2(m,1)=z;
end
output=ifft(X2);

답변 (2개)

Dimitris Kalogiros
Dimitris Kalogiros 2018년 8월 31일
After the manipulations of fft values X , If abs(X) exhibits even symmetry and angle(X) odd symmetry, then ifft should give back a real value time sequence. Otherwise, ifft results to a complex time series.

Matt J
Matt J 2018년 8월 31일
편집: Matt J 2018년 8월 31일
Shifting the angle by a constant amount for every frequency component will not translate the signal. The translation t0 has to be linearly weighted by frequency.
Also, it is much easier to implement what you have done just by doing,
output=ifft( X.*exp(-j*2*pi*f*t0) )
  댓글 수: 6
ben howey
ben howey 2018년 8월 31일
*sorry z=sin(wt+pi/2) = sin(2*pi*0.3+pi/2) , where w is omega frequency in rad/s
Matt J
Matt J 2018년 8월 31일
편집: Matt J 2018년 8월 31일
That is the same as
z=sin(2*pi*0.3*(t+1/1.2))
So yes, it is possible. You would add +/- 1/1.2 to the phase angle of the spectral components at +/- 0.3 Hz.

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

카테고리

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

제품


릴리스

R2016b

Community Treasure Hunt

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

Start Hunting!

Translated by