ECG-Kit 1.0
(1,478 bytes)
%% (Internal) Intersection of two sets with tolerance
%
% [sft_intersect1 idx1 idx2 ] = soft_intersect( val1, val2, win_size )
%
%
% Arguments:
%
% + val1, val2: data elements to be intersected,
%
% + win_size: tolerance to consider val1(i) == val2(i). In fact we
% consider equal two elements if val1(val1 >= (val2(i) - win_size) & val1 <= (val2(i) + win_size) )
%
% Output:
%
% + sft_intersect1: the elements in the soft intersection
%
% + idx1, idx2: the indexes of val1(idx1) which are in the soft
% intersection.
%
% Example:
%
%
% See also soft_set_difference
%
% Author: Mariano Llamedo Soria (llamedom at {electron.frba.utn.edu.ar; unizar.es}
% Version: 0.1 beta
% Birthdate: 17/12/2010
% Last update: 17/12/2010
% Copyright 2008-2015
%
function [sft_intersect1 idx1 idx2 ] = soft_intersect( val1, val2, win_size )
% Find the intersection between index sequence val1-2 within a windows
% win_size.
idx1 = [];
idx2 = [];
sft_intersect1 = unique(cell2mat(arrayfun(@(a)( colvec( val1(val1 >= (a - win_size) & val1 <= (a + win_size) ) ) ), colvec(val2), 'UniformOutput', false)));
if( nargout > 1)
[ ~, idx1] = intersect(val1, sft_intersect1);
end
if( nargout > 2)
sft_intersect2 = unique(cell2mat(arrayfun(@(a)( colvec( val2(val2 >= (a - win_size) & val2 <= (a + win_size) ) ) ), colvec(sft_intersect1), 'UniformOutput', false)));
[ ~, idx2] = intersect(val2, sft_intersect2);
end