Select Git revision
SegmentArray.m 1.69 KiB
classdef SegmentArray < handle
properties
segs;
end
methods
function obj = SegmentArray()
obj.segs = Segment.empty();
end
function add(obj, seg)
if length(obj.segs) == 0
obj.segs(1) = seg;
else
added = false;
for k = 1:length(obj.segs)
if (obj.segs(k).posStart > seg.posStart) || ...
(obj.segs(k).posStart == seg.posStart && ...
obj.segs(k).posEnd > seg.posEnd)
obj.segs = [obj.segs(1:k-1), seg, obj.segs(k:end)];
added = true;
break;
end
end
if ~added
obj.segs = [obj.segs(1:end) seg];
end
end
end
function remove(obj, idx)
obj.segs = [obj.segs(1:idx-1) obj.segs(idx + 1:end)];
end
function sort(obj)
[~, ind] = sort([obj.segs.posStart]);
obj.segs = obj.segs(ind);
end
function newSegments = doTheThing2(obj)
newArray = unique(sort([obj.segs.posStart, obj.segs.posEnd]));
powDens = zeros(size(newArray));
newSegments = SegmentArray();
for k = 1:length(newArray)-1
idx = find([obj.segs.posStart]<=newArray(k) & [obj.segs.posEnd]>=newArray(k+1));
dens = [obj.segs.powDens];
powDens(k) = sum(dens(idx));
newSegments.add(Segment(newArray(k), newArray(k+1), powDens(k)));
end
end
function plot(obj)
end
end
end