Mark specific values on a plot!
7 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Panos Ale
am 19 Okt. 2017
Beantwortet: Hellen Nassuna
am 8 Okt. 2018
Hi consider the following plot:
x=1:100;
y=600+(1400-600).*rand(100,1);
plot(x,y)
How can I mark the y values between 900 and 1100? Thanks!
1 Kommentar
Rik
am 19 Okt. 2017
With hold on and plotting a line over it with an increased line width you could emphasize a certain range.
Akzeptierte Antwort
Birdman
am 19 Okt. 2017
Additional to your code, use the following lines:
yMark=zeros(1,100);%preallocation for speed
for i=1:1:length(y)
if(y(i)>=900 && y(i)<=1100)
yMark(i)=y(i);
end
end
plot(x,yMark,'->')
2 Kommentare
Rik
am 19 Okt. 2017
You can vectorize the loop:
yMark=zeros(1,100);
yMark(y>=900 & y<=1100)=y(y>=900 & y<=1100)
Be aware that this code (both mine and the loop) will result in zero values outside the wanted range. You can fix this by either initializing to a NaN (just replace zeros with NaN), or shortening x the same way as you shorten y:
yMark=y(y>=900 & y<=1100)
xMark=x(y>=900 & y<=1100)
Birdman
am 19 Okt. 2017
Yes you are right. It will make the code more efficient. I just wanted to mark those values on the plot. Thank you for your attention.
Weitere Antworten (1)
Hellen Nassuna
am 8 Okt. 2018
x=1:100;
y=600+(1400-600).*rand(100,1);
plot(x,y)
hold on;
yMark=NaN(1,100);%preallocation for speed
for i=1:1:length(y)
if(y(i)>=900 && y(i)<=1100)
yMark(i)=y(i);
end
end
plot(x,yMark,'->')
hold off
if true
% code
end
0 Kommentare
Siehe auch
Kategorien
Mehr zu Graphics Performance finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!