FFT, IFFT and phase shifting

51 visualizzazioni (ultimi 30 giorni)
RH ZA
RH ZA il 18 Apr 2019
Commentato: RH ZA il 18 Apr 2019
Hi everyone, please i need some help !
i have a rectangular pulse i did the FFT it gaves me a sinc forme and i try to make a phase shifting of this pulse, but when i applicate the ifft on my code i get an horrible forme !!! here is my code :
%XXXXXXXXXXXXXXXXXXXXXXXXXX FFT with bilt in function XXXXXXXXXXXXXXXXXXXX
fs=1e+10;
ts=1/fs;
t=[0:ts:(1.6384e-6)-ts];
A=2;
y=A*trapmf(t,[100e-9 105e-9 205e-9 210e-9]);
subplot(2,1,1)
plot(t,y);
grid;
N=length(t); %which is equal to 16384 so pow of 2
%XXXXXXXXXXXXX FFT XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Xf=fftshift(fft(y));
f=fs.*(-N/2:N/2-1)/N;
subplot(2,1,2)
stem(f,abs(Xf)/length(y));
title('FFT');
%XXXXXXXXXXXXXXXXXXXXXXXXX PHASE SHIFT XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
phi= -100;
ind = 1:numel(Xf)/2; %Postive frequencys
Xf(ind) =abs(Xf(ind)).*exp(1i*angle(Xf(ind))-1i*phi); %// add 1i*phi
ind = numel(Xf)/2+1:numel(Xf); %// upper half (negative frequencys)
Xf(ind) =abs(Xf(ind)).*exp(1i*angle(Xf(ind))+1i*phi); %// subtract 1i*phi
%XXXXXXXXXXXXXXXXXXXXXXXXXX IFFT XXXXXXXXXXXXXXXXXXX
y1=ifft(ifftshift(Xf));
figure(2)
plot(t,real(y1));
grid on;
title('IFFT');

Risposta accettata

Catalytic
Catalytic il 18 Apr 2019
Is this what you want
Xf=fftshift(fft(y));
f=fs.*((0:N-1) -ceil((N-1)/2))/N;
subplot(2,1,2)
stem(f,abs(Xf)/length(y));
title('FFT');
%XXXXXXXXXXXXXXXXXXXXXXXXX PHASE SHIFT XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
phi= -100;
Xf=Xf.*exp(+1i*phi*2*pi*f);
%XXXXXXXXXXXXXXXXXXXXXXXXXX IFFT XXXXXXXXXXXXXXXXXXX
y1=ifft(ifftshift(Xf));
figure(2)
plot(t,real(y1));
grid on;
title('IFFT');
  9 Commenti
Catalytic
Catalytic il 18 Apr 2019
No change to the pulse shape? But you can already do that!
RH ZA
RH ZA il 18 Apr 2019
No, just shiftting it, i tried that with your method but no results, should i give all the frequencys to the equations or just the half ? because with all the frequencys the equation gives complex numbers

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by