i have to get peak values from temperature measurements. Therefore it is important to take one double matrix for getting the start and end points of areas I want to calculate the maxima from. Another double matrix includes the measured values I finally want to get the peaks out of. E.g The first matrix is going [1 77 244 531 till 14400] and the other one has double values in a 14400x1 matrix. Now I want to get the peaks from the 14400x1 matrix in the areas from 1 to 77, 77 to 244, 244 to 531 etc. In the end I should get a vector with all peaks inside of it... I hope someone can understand my problem... Thanks in advance for your help! I thought it should be done similar to this: % PV_change is a 84x1 double going from [1;77;244;531;...;13608] it should give the starting and endpoints for the maxima areas. % TempR1 is a 14400x1 double with all measured values, now I want to get all maxima from the specified areas in the former specified matrix... % So I should get 1 maximum from area 1 to 77, 1 maximum from 77 to 244 and so on... Best would be if these maximas could be stored in a vector PEAKS index=1; for k1= PV_change(1:end-1)'; k2= PV_change(2:end)'; PEAKS(index)=max(TempR1(k1:k2)); index=index+1; end
Prashant Kumar answered .
2025-11-20
% PV_change is a 84x1 double going from [1;77;244;531;...;13608] it should give the starting and endpoints for the maxima areas.
% TempR1 is a 14400x1 double with all measured values, now I want to get all maxima from the specified areas in the former specified matrix...
% So I should get 1 maximum from area 1 to 77, 1 maximum from 77 to 244 and so on... Best would be if these maximas could be stored in a vector PEAKS
% Get peak start and ends into their own separate arrays.
peakStarts = PV_change(1 : end - 1);
peakEnds = PV_change(2 : end - 1);
% Now find the max value of all the peaks.
for k = 1 : length(peakStarts)
% Get starting and stopping indexes for this peak.
k1 = peakStarts(k);
k2 = peakEnds(k);
% Get the max value of TempR1 between those indexes, inclusive.
peakAreas(k) = max(TempR1(k1 : k2));
end