MATLAB Answers

How to label your peaks in descending order?

조회 수: 6(최근 30일)
John Mark Enhaynes
John Mark Enhaynes 2021년 3월 30일
편집: LO 2021년 3월 30일
I search the whole community and website on how to label my peaks from 1-5 from the highest value given
Here is my code I've made so far:
fid=fopen('Programming 2 Data.txt');
e=textscan(fid,'%f %f','headerlines',1);
f=cell2mat(e);
x = f(:,1);
y = f(:,2);
[sortedX,sortIndex]=sort(x);
sortedY=y(sortIndex);
plot(x,y)
findpeaks(sortedY,sortedX,'MinPeakHeight',290,'Annotate','Extents');
xlabel('cm^-1')
ylabel('%T')
title('FTIR')
axis tight
grid
set(gca,'xdir','reverse')
I have search the terminology on findpeaks, but it doesn't really help me that much to get the desired result that I wanted.
  댓글 수: 3
Mathieu NOE
Mathieu NOE 2021년 3월 30일
I ve plenty of other similar functions (attached)
try with peakseek and do the sorting by yourself afterwards

댓글을 달려면 로그인하십시오.

채택된 답변

LO
LO 2021년 3월 30일
편집: LO 2021년 3월 30일
something like this ?
my guess is that you won't need the sortedX because you are looking for peaks on your Y axis, right ? But try adapting this to your code. Eventually the "locs" variable will have to be modified taking into account your X vector.
[peaks,locs,widths] = findpeaks(sortedY,'MinPeakHeight',290,'Annotate','Extents');
[vals,order] = sortrows(peaks,'descend'); % sort them based on peak value, for instance, but you can sort them based on widths as well (just replace peaks with widths in sortrows)
scatter(locs(order),peaks(order),'rv');

추가 답변(0개)

Community Treasure Hunt

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

Start Hunting!

Translated by