Changeset 491

Show
Ignore:
Timestamp:
08/23/11 15:40:20 (9 months ago)
Author:
emuller
Message:

Added AnalogSignal?.cov

Location:
trunk
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/signals/analogs.py

    r490 r491  
    403403            >> print len(res) 
    404404                4 
     405 
     406        Author: Eilif Muller 
    405407        """ 
    406408        if isinstance(events, SpikeTrain): 
     
    421423        if t_last<self.t_stop: 
    422424            yield self.time_slice(t_last, self.t_stop) 
     425 
     426    def cov(self,signal): 
     427        """ 
     428 
     429        Returns the covariance of two signals (self, signal), 
     430 
     431        i.e. mean(self.signal*signal)-mean(self.signal)*(mean(signal) 
     432 
     433 
     434        Inputs: 
     435            signal  - Another AnalogSignal object.  It should have the same temporal dimension 
     436                      and dt. 
     437         
     438        Examples: 
     439            >> a1 = AnalogSignal(numpy.random.normal(size=1000),dt=0.1) 
     440            >> a2 = AnalogSignal(numpy.random.normal(size=1000),dt=0.1) 
     441            >> print a1.cov(a2) 
     442            -0.043763817072107143 
     443            >> print a1.cov(a1) 
     444            1.0063757246782141 
     445 
     446        See also: 
     447            NeuroTools.analysis.ccf 
     448            http://en.wikipedia.org/wiki/Covariance 
     449 
     450        Author: Eilif Muller 
     451 
     452        """ 
     453 
     454        from numpy import mean 
     455 
     456        assert signal.dt == self.dt 
     457        assert signal.duration()==self.duration() 
     458 
     459        return mean(self.signal*signal.signal)-mean(self.signal)*(mean(signal.signal)) 
     460     
    423461 
    424462 
  • trunk/test/test_analogs.py

    r490 r491  
    8585        assert res3[0].duration() == 950.0 
    8686 
     87    def testCovariance(self): 
     88        a1 = analogs.AnalogSignal(numpy.random.normal(size=10000),dt=0.1) 
     89        a2 = analogs.AnalogSignal(numpy.random.normal(size=10000),dt=0.1) 
     90        assert a1.cov(a2) < 0.5 
     91        assert a1.cov(a1) > 0.5 
    8792         
    8893