Reducing values preceding the 1st minima to zero
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Tom
le 22 Juil 2014
Commenté : Azzi Abdelmalek
le 22 Juil 2014
I need to reduce the value of all the values before the 1st minima, to zero, e.g. if I had: -
x = 0:30;
y = [10 9 8 7 6 5 4 3 2 1 0 1 2 3 4 5 6 5 4 3 2 3 4 3 2 1 0.5 0.3 0.2 0.1 0]';
figure(1)
plot(x,y)
ylim([0 10])
then I need a bit of code that changes it to: -
z = [0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 5 4 3 2 3 4 3 2 1 0.5 0.3 0.2 0.1 0]';
figure(2)
plot(x,z)
ylim([0 10])
instead.
Can anyone suggest something?
Many thanks.
0 commentaires
Réponse acceptée
Azzi Abdelmalek
le 22 Juil 2014
Modifié(e) : Azzi Abdelmalek
le 22 Juil 2014
y = [10 9 8 7 6 5 4 3 2 1 0 1 2 3 4 5 6 5 4 3 2 3 4 3 2 1 0.5 0.3 0.2 0.1 0]';
[~,jj]=findpeaks(-y,'npeaks',1)
z=y
z(1:jj)=0
2 commentaires
Azzi Abdelmalek
le 22 Juil 2014
You can also use gradient
g=gradient(y);
idx=find(g==0 & gradient(g)>0,1)
z=[zeros(idx,1) ;y(idx+1:end)]
Plus de réponses (1)
Andrei Bobrov
le 22 Juil 2014
Modifié(e) : Andrei Bobrov
le 22 Juil 2014
ii = find(diff(diff(y)<0)==-1,1)+1;
y1=y;
y1(1:ii)=y(ii);
or
ii = strfind([0,diff(y(:)')<0],[1 0]);
y1=y;
y1(1:ii(1)) = y(ii(1));
0 commentaires
Voir également
Catégories
En savoir plus sur Get Started with MATLAB dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!