Filter löschen
Filter löschen

peak addition/ arrary addition

1 Ansicht (letzte 30 Tage)
Chong Tao
Chong Tao am 30 Aug. 2013
I have a question about the addition of peaks in the form of 2D arrays, say, each peak is a 400X2 array.
Peak 1:
P1x = [1500:0.01:1504]' % 400 points centered at 1502
P1Y = 5.*exp(-(1-x./1502).^2/0.3) % some function of x
similarly, peak2:
P2x = [1501.8:0.01:1505.8]' % 400 points centered at 1503.8
P2Y = 12.*exp(-(1-x./1503.8).^2/0.5) % some function of x
Peak 3:
P3x = [1505:0.01:1509]' % 400 points centered at 1507
P3Y = 17.*exp(-(1-x./1507).^2/0.8)
.....etc. How to do the peak addition if there is any overlap and store them in a 2D array, so X of the peak sum will be [1501:0.01:1508] ( not from 1500 to 1509); Y of the sum is just the addition of the peaks.
what if I have hundreds of peaks? Thanks

Akzeptierte Antwort

Iain
Iain am 30 Aug. 2013
Bearbeitet: Iain am 30 Aug. 2013
If all the peaks have the same parameterised formula
f = @(A,B,C,x)(A.*exp(-(1-x./B).^2./C);
for i = 1:numel(x)
y(i) = sum(f(A,B,C,x(i)));
end
Its not quick, but it will do the job for 100s of thousands of peaks. - You'll need to supply "x".
Alternatively, a lot quicker, if you use "bsxfun", and a bit of intelligence, you'll be able to get rid of the loop. - But you won't be able to handle quite so many peaks.
  4 Kommentare
Chong Tao
Chong Tao am 30 Aug. 2013
Thanks again lain. I'll try what you suggested.
Chong Tao
Chong Tao am 5 Sep. 2013
Bearbeitet: Chong Tao am 5 Sep. 2013
I tried the above method. It works fine when the range of x is small, but it wont work if X range is big, say from 1000 to 1500, with a stepsize of 0.001. ieadlly, I'd like to calculate the peak with only +/-200 points arround the peak center and sum all the peaks.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Produkte

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by