Home > chronux > spectral_analysis > continuous > evoked.m

evoked

PURPOSE ^

Function to calculate the evoked response given continuous data in the

SYNOPSIS ^

function [V,t,Err] = evoked(data,Fs,win,width,plt,err)

DESCRIPTION ^

 Function to calculate the evoked response given continuous data in the
 form time x channels
 Usage [V,t,Err] = evoked(data,Fs,win,width,plt,err)
 
 Inputs  
   Note that all times can be in arbitrary units. But the units have to be
   consistent. So, if win is in secs, width is in secs and Fs has to be Hz. 
   If win is in samples, so is width and Fs=1.

    data(times, channels/trials or a single vector)      (required)    
    Fs  sampling frequency            (required)
    win   subsection of data to be used. Default all available data
    width (s) of smoothing kernel. Default 50 samples                  
    plt plot 'n' for no plot, otherwise plot color. Default blue colored lines.                                  
    err = 0/1. Default 1=calculate bootstrap errorbars.                     
                                                         
 Outputs                                             
    V = evoked potential                                 
    t = times of evaluation                              
    Err = bootstrap statdard deviation

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [V,t,Err] = evoked(data,Fs,win,width,plt,err)
0002 % Function to calculate the evoked response given continuous data in the
0003 % form time x channels
0004 % Usage [V,t,Err] = evoked(data,Fs,win,width,plt,err)
0005 %
0006 % Inputs
0007 %   Note that all times can be in arbitrary units. But the units have to be
0008 %   consistent. So, if win is in secs, width is in secs and Fs has to be Hz.
0009 %   If win is in samples, so is width and Fs=1.
0010 %
0011 %    data(times, channels/trials or a single vector)      (required)
0012 %    Fs  sampling frequency            (required)
0013 %    win   subsection of data to be used. Default all available data
0014 %    width (s) of smoothing kernel. Default 50 samples
0015 %    plt plot 'n' for no plot, otherwise plot color. Default blue colored lines.
0016 %    err = 0/1. Default 1=calculate bootstrap errorbars.
0017 %
0018 % Outputs
0019 %    V = evoked potential
0020 %    t = times of evaluation
0021 %    Err = bootstrap statdard deviation
0022 
0023 if nargin < 2;error('Data, sampling frequency required');end
0024 data=change_row_to_column(data);
0025 N=size(data,1);
0026 data=data';
0027 if nargin <3; win = [0 (N-1)/Fs];end
0028 if nargin <4; width = 50/Fs;end
0029 if nargin <5; plt = 'b';end
0030 if nargin <6;err = 1;end
0031 T=win;
0032 if isempty(T); T = [0 (N-1)/Fs];end
0033 if isempty(width); width = 50/Fs;end
0034 if isempty(plt); plt = 'b';end
0035 if isempty(err);err = 1;end
0036 
0037 t = min(T):1/Fs:max(T);
0038 if nargin >= 5
0039   indx = find(t>T(1) & t<T(2));
0040   t = t(indx);
0041   data = data(:,indx);
0042 end
0043 
0044 if width > (t(length(t))-t(1))/2
0045   disp('Width is too large for data segment: should be in seconds')
0046   disp('Turn off smoothing')
0047   width = 0;
0048 end
0049 
0050 s = t(2)-t(1);
0051 N = fix(width/s);
0052 NT = length(data(:,1));
0053 
0054 if NT > 1
0055     mdata = mean(data);
0056 else
0057     mdata = data;
0058 end
0059 if N > 4
0060   smdata = locsmooth(mdata,N,fix(N/2)); 
0061 else
0062   smdata = mdata;  
0063 end
0064   
0065 % if errorbars requested then do a bootstrap over trials...
0066 
0067 Err = 0;
0068 if NT < 4; 
0069   disp('Too few trials: no errorbars calculated')
0070   err = 0;    
0071 end
0072 
0073 if err ~= 0 && NT > 1
0074   Nboot = 10;
0075   bevk = 0;
0076   sevk = 0;
0077   for b=1:Nboot
0078     indx = floor(NT*rand(1,NT)) + 1;
0079     evktmp = mean(data(indx,:));
0080     if N > 4
0081       evktmp = locsmooth(evktmp,N,fix(N/2));
0082     end
0083     bevk = bevk + evktmp;
0084     sevk = sevk + evktmp.^2;
0085   end
0086   stdevk = sqrt((sevk/Nboot - bevk.^2/Nboot^2));
0087   Err = stdevk;
0088 end
0089 
0090 V = smdata;
0091 if plt ~= 'n'
0092   plot(t,smdata,plt)
0093   hold on
0094   mn = mean(smdata);
0095   ax = get(gca,'xlim');
0096   line(ax,mn*[1 1],'color','k')
0097   if err
0098     line(ax,(mn+2*mean(stdevk))*[1 1],'color','r')
0099     line(ax,(mn-2*mean(stdevk))*[1 1],'color','r')
0100     hold off
0101   end
0102 end
0103 
0104 
0105 
0106 
0107 
0108 
0109 
0110 
0111

Generated on Fri 28-Sep-2012 12:34:30 by m2html © 2005