Mercurial > hg > map
annotate userProgramsTim/fourier_analyse.m @ 38:c2204b18f4a2 tip
End nov big change
author | Ray Meddis <rmeddis@essex.ac.uk> |
---|---|
date | Mon, 28 Nov 2011 13:34:28 +0000 |
parents | |
children |
rev | line source |
---|---|
rmeddis@38 | 1 function [frequency,out] = fourier_analyse(in, sfreq,color_plot) |
rmeddis@38 | 2 % |
rmeddis@38 | 3 %plots absolute values of fft of input signal on a semilogarithmic scale |
rmeddis@38 | 4 %long term spectrum |
rmeddis@38 | 5 % |
rmeddis@38 | 6 %use: [frequency,out] = fourier_analyse(in, sfreq) |
rmeddis@38 | 7 % in: input signal |
rmeddis@38 | 8 % sfreq: samplingfrequency |
rmeddis@38 | 9 % frequency: frequency vector |
rmeddis@38 | 10 % out: fourier-spectrum (complex) |
rmeddis@38 | 11 if ~exist('color_plot') |
rmeddis@38 | 12 color_plot = 'b'; |
rmeddis@38 | 13 end |
rmeddis@38 | 14 out = fft(in)/(length(in)); %%Normierung auf Wurzel der Länge, da Matlab intern ohne Normierung der Hin-Fouriertransformation arbeitet |
rmeddis@38 | 15 t = [0:1/sfreq:length(in)/sfreq-1/sfreq]; |
rmeddis@38 | 16 frequency = [0:1/t(end):1/(2*(t(2)-t(1)))]; |
rmeddis@38 | 17 %spektrale leistungsdichte wird geplottet, wobei eine amplitude von 1 100 |
rmeddis@38 | 18 %dB entspricht |
rmeddis@38 | 19 plot(frequency,20*log10(sqrt(2)*abs(out(1:round(length(in)/2)))),color_plot); |
rmeddis@38 | 20 %sqrt(2) weil Gesamtenergie auch in Spiegelfrequenzen enthalten |
rmeddis@38 | 21 xlabel('frequency / Hz'); |
rmeddis@38 | 22 ylabel('fourier amplitude / dB'); |