I need to shade the areas of graph above y = 1 line and below y = -1 line. How can I do code for that.
Like this one.

 채택된 답변

Sudheer Bhimireddy
Sudheer Bhimireddy 2020년 10월 19일

2 개 추천

Look at area() function in MATLAB. May be that helps with your code.
Below is an example:
x = -3*pi : 0.1 :3*pi;
y_signal = sin(2*x)+sin(1.7*x); % Random signal
threshold = 0.7; % Area lower boundary
figure(1);
clf;
hold on;
area(x, max(y_signal, threshold), threshold,'EdgeColor', 'none', 'FaceColor', 'b');
plot(x, y_signal,'k-',lsz,2);
Here is the result:

댓글 수: 3

Sreerag K
Sreerag K 2020년 10월 19일
편집: Sreerag K 2020년 10월 19일
It worked very well in the positve y axis. But I need to do the same for the negative y axis which was not working with this code.
To do this same in the negative y axis what should I give as the baseline argument for area.
I was able to replicate the problem with two baselines. For now, may be this workaround might help.
x = -3*pi : 0.1 :3*pi;
y_signal = sin(2*x)+sin(1.7*x); % Random signal
threshold_high = 0.7;
threshold_low = -0.5;
figure(1);
clf;
hold on;
area(x, max(y_signal, threshold_high), threshold_high,'EdgeColor', 'none', 'FaceColor', 'b');
area(x, min(y_signal, threshold_low), threshold_low, 'EdgeColor', 'none', 'FaceColor', 'g');
% Now mask the unwanted region in between white
area([min(x) max(x)], [threshold_high threshold_high],threshold_low,'EdgeColor', 'none', 'FaceColor', 'w','ShowBaseLine', 'off');
plot(x, y_signal,'k-',lsz,2);
plot([min(x) max(x)], [threshold_high threshold_high],'k--',lsz,2);
plot([min(x) max(x)], [threshold_low threshold_low], 'k--',lsz,2);
Output:
Sreerag K
Sreerag K 2020년 10월 19일
Thank you. It worked fine

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

제품

릴리스

R2020b

태그

질문:

2020년 10월 19일

댓글:

2020년 10월 19일

Community Treasure Hunt

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

Start Hunting!

Translated by