Two-side spectrum in Matlab
69 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hoang
el 3 de Nov. de 2013
Comentada: Joao Nizer
el 2 de Jul. de 2021
Dear my colleagues, I am a new user of Matlab. Now, I have a signal like x(t) = A1*sin(2*pi*f1*t) + A2*sin(-2*pi*f2*t), where f1, f2>0. Could anyone please show me whether I could obtain the spectrum of x in which frequency f2 is present only as a negative frequency of two-side spectrum (normally, f2 will appear in both sides of Matlab's FFT)?
Thank you very much.
Lomath.
0 comentarios
Respuesta aceptada
Wayne King
el 3 de Nov. de 2013
Editada: Wayne King
el 3 de Nov. de 2013
Youssef is correct. Why do you think that f2 will only show up as a "negative" frequency.
sin() is an odd function so sin(-t) = -sin(t)
Accordingly, your signal is equal to
Fs=40;
Ts=1/Fs;
t=0:Ts:10-Ts;
f1=4; f2=15;
y=sin(2*pi*t*f1)-sin(2*pi*t*f2);
If you really want components only occurring on one side, your signal must be complex-valued. Here is an example with complex exponentials.
Fs = 40;
Ts=1/Fs;
t=0:Ts:10-Ts;
f1 = 4; f2 = -15;
y = exp(1i*2*pi*f1*t)+exp(1i*2*pi*f2*t);
ydft = fftshift(fft(y));
df = Fs/length(y);
freqvec = -Fs/2+df:df:Fs/2;
plot(freqvec,abs(ydft))
xlabel('Hz');
2 comentarios
Joao Nizer
el 2 de Jul. de 2021
freqvec = -Fs/2+df:df:Fs/2;
should be
freqvec = -Fs/2:df:Fs/2-df;
Más respuestas (1)
Youssef Khmou
el 3 de Nov. de 2013
You can start by many tutorials, each offers a different approach to the DFT problem, in terms of resolution and amplitude estimation, i wrote a 2 sided example for you , verify it :
Fs=40;
Ts=1/Fs;
t=0:Ts:10-Ts;
f1=4;f2=15;
y=sin(2*pi*t*f1)+sin(2*pi*t*f2);
N=length(y);
F=fft(y);
fr=(-N/2:N/2-1)*Fs/(N);
figure, plot(fr,abs(F))
xlabel(' frequency Hz')
4 comentarios
Renan Ribeiro
el 15 de Oct. de 2018
Sorry to revive the post, but the given code did not work with me (maybe I am messing something). The code given in this post worked just fine.
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!