function intVecSignal = intVectAnalysis( sphSig, M_sh2pv, overlap )

    % check signal orientation
    if size( sphSig, 1 ) > size( sphSig, 2 )
        sphSig              = sphSig';
    end        
       
    % convert to pressure velocity
    pvSig                   = M_sh2pv * sphSig;
    sigLenght               = size( sphSig, 2 );
    nSH                     = size( sphSig, 1 );
    if nSH ~= 4
        errorMsg            = 'ATTENTION: signal is not a first order !';
        error( errorMsg )
    end
    
    bufferLength            = 100;                                          % samples
    bufferOverlap           = bufferLength * overlap;
    nBuf                    = floor( sigLenght / bufferOverlap );
    pvsig_buf               = zeros( nSH, bufferLength, nBuf );
    pvSig                   = pvSig( :, 1 : nBuf * bufferOverlap );
    
    for ns = 1 : nSH
        pvsig_buf( ns, :, : ) = buffer( pvSig( ns, : )', bufferLength, bufferOverlap );
    end
    
    % compute correlations of pressure-velocity for each partition,
    % for short-time estimates of intensity vector
    intVecSignal            = zeros( nBuf, 3 );
    for nb = 1 : nBuf
        p                   = pvsig_buf( 1, :, nb );
        v                   = pvsig_buf( 2:4, :, nb );
        intVecSignal( nb, : ) = sum( ( ones( 3, 1 ) * p ) .* v, 2 );
    end
    
end
