summaryrefslogtreecommitdiff
path: root/openEMS/matlab/FFT_time2freq.m
diff options
context:
space:
mode:
authorRuben Undheim <ruben.undheim@gmail.com>2016-07-05 18:02:38 +0200
committerRuben Undheim <ruben.undheim@gmail.com>2016-07-05 18:02:38 +0200
commitef962f6008f25ab7cbd4ca21bcc72b97a1e2d76f (patch)
tree8149bee93d1a3f91d4503bfb3853adac4af0a85e /openEMS/matlab/FFT_time2freq.m
Imported Upstream version 0.0.34
Diffstat (limited to 'openEMS/matlab/FFT_time2freq.m')
-rw-r--r--openEMS/matlab/FFT_time2freq.m18
1 files changed, 18 insertions, 0 deletions
diff --git a/openEMS/matlab/FFT_time2freq.m b/openEMS/matlab/FFT_time2freq.m
new file mode 100644
index 0000000..a82c435
--- /dev/null
+++ b/openEMS/matlab/FFT_time2freq.m
@@ -0,0 +1,18 @@
+function [f,val] = FFT_time2freq( t, val )
+% [f,val] = FFT_time2freq( t, val )
+%
+% Note: This function can only be used for pulse signals
+%
+% See also DFT_time2freq
+
+dt=t(2)-t(1); % timestep
+L=numel(val); % signal length
+NFFT = 2^nextpow2(L); % next power of 2 (makes fft fast)
+%very fine freq resolution... NFFT = NFFT+100000;
+val = fft( val, NFFT)*dt;
+f = 1/(2*dt) * linspace(0,1,NFFT/2+1);
+
+val = 2*val(1:NFFT/2+1); % single-sided spectrum
+
+%correct phase for time-shifted signals
+val = val .* exp(-1j*2*pi*f * t(1));