Reducing values preceding the 1st minima to zero
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Tom
am 22 Jul. 2014
Kommentiert: Azzi Abdelmalek
am 22 Jul. 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 Kommentare
Akzeptierte Antwort
Azzi Abdelmalek
am 22 Jul. 2014
Bearbeitet: Azzi Abdelmalek
am 22 Jul. 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 Kommentare
Azzi Abdelmalek
am 22 Jul. 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)]
Weitere Antworten (1)
Andrei Bobrov
am 22 Jul. 2014
Bearbeitet: Andrei Bobrov
am 22 Jul. 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 Kommentare
Siehe auch
Kategorien
Mehr zu Get Started with MATLAB finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!