How to find common peak and save it location
조회 수: 1 (최근 30일)
이전 댓글 표시
How can I fine common peak? Ex. When I have 2 data that data 1 have peak at X axis location at 3 ,4 ,5 ,6 ,7 and data 2 at 1 , 4 ,6 , 8 ,10 , so the common peak is at 4 , 6 , but if I dont know where the common peak occur , how can I find the data that occur at the same X coordinate .
clear
pure_brain = readmatrix('Pure Brain Spectra.csv');
[pks,locsBr] = findpeaks(pure_brain(:,2));
LvBrain = pure_brain(locsBr,2)>0; % Set Threshold = 1E+4
xBrain = 1:size(pure_brain,1);
YBrain = pure_brain(locsBr(LvBrain),2);
YBrain = YBrain .* 100/max(YBrain);
[pks_min,pks_max] = bounds(pks); % Minimum & Maximum Values Of pks
figure
pure_Liver = readmatrix('Pure Liver Spectra.csv');
[pks,locsLiv] = findpeaks(pure_Liver(:,2));
LvLiver = pure_Liver(locsLiv,2)>0; % Set Threshold = 1E+4
xLiver = 1:size(pure_Liver,1);
YLiver = pure_Liver(locsLiv(LvLiver),2);
YLiver = YLiver .* 100/max(YLiver);
plot(xBrain(locsLiv(LvBrain)), YBrain, '.r')
hold on
plot(xLiver(locsLiv(LvLiver)), YLiver, '.b')
hold off
grid
% To find common peaks considering the threshold of 1E+4:
lB = locsBr(LvBrain);
lL = locsLiv(LvLiver);
s = max(length(lB), length(lL));
locsLivNew = [lL; false(s-length(lL),1)];
locsBrNew = [lB; false(s-length(lB),1)];
common = locsLivNew == locsBrNew; % Find the common location of peaks
댓글 수: 5
Image Analyst
2021년 4월 8일
If you're up for it, Mathieu, just define one as a variable and continue on with the solution
windowWidth = 15; % whatever....
% Now code to call findpeaks() and find out which peaks
% are within windowWidth of peaks in other signal....
Then he can change the number to whatever he wants.
Mathieu NOE
2021년 4월 8일
thank you for the tip, but I'd like to see first the OP clarify his needs - have to work a bit for my company sometimes !
답변 (1개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!