Fourier-Frequency analyse
이전 댓글 표시
I need to do next: Draw a frequency image of following signal: t=0:0.0001:0.05; y=square(5*pi*50*t);
also it's required to draw real and imaginary part of frequency spectrum.
There is mine solution, so can anyone check it out
t=0:0.0001:0.05; y=square(5*pi*50*t); N=length(t); deltaf=1/0.05; f=(0:N-1)*deltaf;
disp('Efektivna vrijednost') Yef=sqrt(sum(y.*y)/N)
disp('Frekvencijska slika') F=(fft(y))*2/N;
figure, plot(f,F) axis([0 1200 -0.5 1])
figure, subplot(3,1,1)
plot(f,20*log10(real(F)/max(abs(F)))) axis([0 1200 -80 10])
subplot(3,1,2) plot(f,20*log10(imag(F)/max(abs(F)))) axis([0 1200 -80 10])
subplot(3,1,3) plot(f,20*log10(F/max(abs(F)))) axis([0 1200 -80 10])
채택된 답변
추가 답변 (3개)
Dr. Seis
2012년 1월 20일
You need to make a few changes:
If,
dt = 0.0001;
t = 0:dt:(0.05-dt);
N = length(t);
y_time = square(5*pi*50*t);
Then,
df = 1 / (N*dt);
Nyq = 1 / (2*dt);
f = -Nyq : df : Nyq-df;
y_freq = fftshift(fft(y_time))*dt;
Now you can plot the correct amplitudes with the correct frequencies:
plot(f,real(y_freq),'b-',f,imag(y_freq),'r-');
Robin Beene
2012년 1월 20일
0 개 추천
댓글 수: 1
Dr. Seis
2012년 1월 20일
Think of Parseval's theorem, the energy in the time domain is equal to the energy in the frequency domain. If this condition is not met, then it is a flag that something has gone wrong.
Robin Beene
2012년 1월 20일
0 개 추천
댓글 수: 2
Dr. Seis
2012년 1월 20일
To have just the y-axis plotted on logarithmic scale, try:
semilogy(f, imag(y_freq));
If you want just the x-axis plotted on logarithmic scale, then:
semilogx(f, imag(y_freq));
If you want x- and y-axis plotted on logarithmic scale, then:
loglog(f, imag(y_freq));
Robin Beene
2012년 1월 20일
카테고리
도움말 센터 및 File Exchange에서 Get Started with Signal Processing Toolbox에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!