1function f_val = DFT_time2freq( t, val, freq, signal_type ) 2% f_val = DFT_time2freq( t, val, freq, signal_type ) 3% 4% computes the DFT at the given frequencies 5% 6% parameter: 7% t : time vector 8% val: data vector 9% freq: DFT frequency vector 10% signal_type: 'pulse' (default), 'periodic' 11% 12% return values: 13% f_val: single-sided spectrum 14% 15% example: 16% t=linspace(0,1,100); 17% t_val=0.9*sin(2*pi*3*t); % sine wave; amplitude 0.9; frequency 3 Hz 18% f=linspace(1,5,101); 19% f_val=DFT_time2freq( t, t_val, f, 'periodic' ); 20% interp1(f,abs(f_val),3) 21% ans = 0.8910 22% plot( t, t_val ) 23% plot( f, abs(f_val) ) 24 25if numel(t) ~= numel(val) 26 error 'numel(t) ~= numel(val)' 27end 28 29if nargin<4 30 signal_type = 'pulse'; 31end 32 33f_val = zeros(1,numel(freq)); 34for f_idx=1:numel(freq) 35 f_val(f_idx) = sum( val .* exp( -1i * 2*pi*freq(f_idx) * t ) ); 36end 37 38if strcmpi(signal_type, 'pulse') 39 dt = t(2)-t(1); 40 f_val = f_val * dt; 41elseif strcmpi(signal_type, 'periodic') 42 f_val = f_val / length(t); 43else 44 error 'unknown signal type' 45end 46 47f_val = f_val * 2; % single-sided spectrum 48