Problem with findpeaks 3D grid
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Miguel andres
il 9 Mag 2020
Commentato: Ameer Hamza
il 10 Mag 2020
Hey all,
I have a velocity values over 720 time steps for a curvilinear grid (40x144x720). I would like to obtain the peak in all the grid points. One problem that I have is that the number of peaks are different in all the points.
I tried using the function findpeaks, and if I discretize one point, it works well. My problems is when I try the loops and I don´t know really well I storage the output.
u_atl=squeeze(u(:,:,1,:));%size(40x144x720)
n=720; %time steps
i=zeros(40,144);%latitud and longitud
j=zeros(40,144);
for i=1:40
for j=1:144
for k=1:n
[pval(i,j,k),ploc(i,j,k)]=findpeaks(u_atl(i,j,k),'minpeakdistance',6);
[peak_ebb(i,j,k),ploc(i,j,k)]=findpeaks(-u_atl(i,j,k),'minpeakdistance',6);
end
end
end
I'm pretty new in Matlab so I hope you can help me.
Thanks in advice,
Miguel.
0 Commenti
Risposta accettata
Ameer Hamza
il 9 Mag 2020
Modificato: Ameer Hamza
il 9 Mag 2020
findpeaks() needs a vector, whereas you are passing it a scalar. It will not work properly. Also, if the number of peaks is different, then you will need to use a cell array to store all values. Normal arrays can only hold values when all the dimensions are of the same length. Try something like this
u_atl=squeeze(u(:,:,1,:));%size(40x144x720)
pval = cell(40, 144);
ploc = cell(40, 144);
peak_ebb = cell(40, 144);
ploc_ebb = cell(40, 144);
for i=1:40
for j=1:144
[pval{i,j},ploc{i,j}] = findpeaks(squeeze(u_atl(i,j,:)), 'minpeakdistance', 6);
[peak_ebb{i,j},ploc_ebb{i,j}] = findpeaks(-squeeze(u_atl(i,j,:)), 'minpeakdistance', 6);
end
end
6 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Multirate Signal Processing in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
