Fill the Interval Area Between Two Curves by MATLAB fill
Function
Oct. 06, 2022
MATLAB的fill
函数可以用于填充两个曲线之间的interval,比如填充$y=x-1$和$y=x+1$之间的interval:
这种方法在绘制置信区间的时候很常用。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
clc, clear, close all
xdata = linspace(0, 10, 10);
ydata1 = xdata + 1;
ydata2 = xdata - 1;
figure, axes
hold(gca, "on")
grid(gca, "on")
box(gca, "on")
plot(xdata, ydata1, LineWidth=1.5)
plot(xdata, ydata2, LineWidth=1.5)
fill([xdata, fliplr(xdata)], [ydata1, fliplr(ydata2)], ...
'b', 'FaceAlpha', 0.2, 'EdgeColor', 'none')
legend("y=x+1", "y=x-1", "Location", "best")
需要注意的是,其中的变量xdata
,ydata1
和ydata2
都是行向量,因此在绘图函数中使用了fliplr
函数。如果是列向量,那么则需要使用flipud
函数,并且中间需要使用分号;
间隔,在实际使用的时候一定要注意这一点!
1
2
3
4
5
6
7
...
xdata = linspace(0, 10, 10)';
ydata1 = xdata + 1;
ydata2 = xdata - 1;
...
fill([xdata; flipud(xdata)], [ydata1; flipud(ydata2)], ...
'b', 'FaceAlpha', 0.2, 'EdgeColor', 'none')
两种方式的绘制效果是完全一致的。
Reference
[1] fill - MathWorks.