summaryrefslogtreecommitdiff
path: root/macros/tfe.sci
blob: 5a6cf5a8bc2a2510800f96221d75d4441083af66 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/*
Dependency : pwelch
Calling Sequence:
    [Pxx,freq] = tfe(x,y,Nfft,Fs,window,overlap,range,plot_type,detrend)
        Estimate transfer function of system with input "x" and output "y".
        Use the Welch (1967) periodogram/FFT method.
        Compatible with Matlab R11 tfe and earlier.
        See "help pwelch" for description of arguments, hints and references — especially hint (7) for Matlab R11 defaults.*/
function varargout = tfe(varargin)
    nargout = argn (1)
    nargin = argn(2)
    // Check fixed argument
    if ( nargin<2 )
      error( 'tfe: Need at least 2 args. Use help tfe.' );
    end
    nvarargin = max(size(varargin));
    // remove any pwelch RESULT args and add 'trans'
    for iarg=1:nvarargin
      arg = varargin(iarg);
      if ( ~isempty(arg) && type(arg) == [10 ] && ( ~strcmp(arg,'power') || ...
             ~strcmp(arg,'cross') || ~strcmp(arg,'trans') || ...
             ~strcmp(arg,'coher') || ~strcmp(arg,'ypower') ))
        varargin(iarg) = [];
      end
    end
    varargin(nvarargin+1) = 'trans';
    saved_compatib = pwelch('R11-');
    if ( nargout==0 )
      pwelch(varargin(:));
    elseif ( nargout==1 )
      Pxx = pwelch(varargin(:));
      varargout(1) = Pxx;
    elseif ( nargout>=2 )
      [Pxx,f] = pwelch(varargin(:));
      varargout(1) = Pxx;
      varargout(2) = f;
    end
    pwelch(saved_compatib);
  endfunction