You said you have "lower peaks due to end point". So it's always the last point that drops. So the last point is bogus and should basically be ignored? Are you obtaining a sequence of signals, And then you just stitch on the next signal onto the master, growing signal? So you could do
for k = 1 : numberOfSignalsToStitch
thisSignal = HoweverYouGetIt();
thisSignal = thisSignal - thisSignal(1) + allSignals(end);
allSignals = [allSignals, thisSignal]
If you need more help, attach your signal(s) in a .mat file.