|
@@ -0,0 +1,39 @@
|
|
|
+% function GetIntervalsIndex:
|
|
|
+%
|
|
|
+% Uses the data along with a data value and returns the intervals (as indices)
|
|
|
+% for the provided value
|
|
|
+%
|
|
|
+% input:
|
|
|
+% data - is a data vector
|
|
|
+% value - value to use for intervals calculation
|
|
|
+%
|
|
|
+% output:
|
|
|
+% intervals - nx2 array (start index, end index)
|
|
|
+
|
|
|
+function [intervals] = GetIntervalsIndex(data, value)
|
|
|
+ assert(size(data,1) == 1 | size(data,2) == 1, 'Data should be a vector');
|
|
|
+ % initialize data
|
|
|
+ intervals = zeros(0,2);
|
|
|
+
|
|
|
+ % find position of attribute in data
|
|
|
+
|
|
|
+ startIndex = -1;
|
|
|
+ for i=1:size(data,1)
|
|
|
+ if (data(i)==value)
|
|
|
+ % first element of interval
|
|
|
+ if (startIndex==-1)
|
|
|
+ startIndex=i;
|
|
|
+ end
|
|
|
+ else
|
|
|
+ % interval finished on previous iteration
|
|
|
+ if (startIndex~=-1)
|
|
|
+ intervals = [intervals; startIndex i-1];
|
|
|
+ end
|
|
|
+ startIndex = -1;
|
|
|
+ end
|
|
|
+ end
|
|
|
+ % add last interval
|
|
|
+ if (startIndex~=-1)
|
|
|
+ intervals = [intervals; startIndex length(data)];
|
|
|
+ end
|
|
|
+end
|