plot regression line through first 5 peaks
2 次查看(过去 30 天)
显示 更早的评论
I am trying to plot the first 5 peaks on the PSD and I am having trouble getting the peaks to plot in their correpsonding locations. I was wondering how to go about this.
[maxpks, maxloc]=findpeaks(PSD);
[s,t]=size(maxloc);
figure(1)
plot(fp,PSD)
hold on
fpml=fp(maxloc);
plot(fpml, maxpks, 'r*')
hold on
sortpks=sort(maxpks);
sortlocs=sort(maxloc,'descend');
[j,h]=size(sortpks);
J= [sortpks(j),sortpks(j-1),sortpks(j-2), sortpks(j-3), sortpks(j-4)]; %first five peak
ML=[sortlocs(j),sortlocs(j-1),sortlocs(j-2),sortlocs(j-3),sortlocs(j-4)];
ML=[maxloc(s-4),maxloc(s-3),maxloc(s-2),maxloc(s-1),maxloc(s)]
plot(J,'y*')
Fit = polyfit(ML,J,1); %linear regression
yfit = Fit(1)*ML+Fit(2); %equation of line
hold on
plot(ML,yfit,'g-')
hold off
0 个评论
采纳的回答
Mathieu NOE
2021-3-10
hello
you can directly ask findpeaks to search only the 5 largest peaks :
[...] = findpeaks(...,'NPeaks',NP) specifies the maximum number of peaks
to be found. NP is an integer greater than zero. If not specified, all
peaks are returned. Use this parameter in conjunction with setting the
sort direction to 'descend' to return the NP largest peaks. (see
'SortStr')
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!