Utilizing "maxk" function in series of vectors

1 visualizzazione (ultimi 30 giorni)
Hi. I used "findpeaks" function, and get peak datas in vector(pks, locs): "locs" means the X value.
And I wanna get 4 peak datas in vector in order to "locs" value like the loaded picture in red grid (in the range of 1<locs<10).
But according to the present code, I can only get seperate "maxk" values for each pks and locs.
How can I get desirable vector array like the picture?
for n=1:col-2
y=numbers(:,col);
ys=smooth(y,50,'sgolay',5);
[pks,locs] = findpeaks(ys,x,'MinPeakDistance',0.5);
A{n}=[pks,locs];
B{n}=maxk(A{n,1}(locs>1&locs<10,:),4);
end

Risposta accettata

Matt J
Matt J il 2 Set 2021
Modificato: Matt J il 2 Set 2021
for n=1:col-2
y=numbers(:,col);
ys=smooth(y,50,'sgolay',5);
[pks,locs] = findpeaks(ys,x,'MinPeakDistance',0.5);
[~,idx]=maxk( pks(locs>1&locs<10) ,4);
A{n}=[pks,locs];
B{n}=A{n}(idx,:);
end
  2 Commenti
Daeyeon Koh
Daeyeon Koh il 2 Set 2021
Hi Matt, and thank you for your help.
I understand usability of indexing.
By the way, although I set the locational range (locs>1&locs<10), it looks like "locs>1" doesn't work.
(the picture below is a result when sorting idx: sort(idx))
How to solve this problem?
Matt J
Matt J il 2 Set 2021
Modificato: Matt J il 2 Set 2021
To troubleshoot, we need to see pks and locs. I suggest attaching them in a .mat file.

Accedi per commentare.

Più risposte (0)

Tag

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by