Matlab 填充函数

问题描述 投票:0回答:1

我试图为xaxis(大小7301x1)填充变量b(大小7301x1)和zaxis的最小值(zaxis的大小为1x1376,但我只想使用它的最小值)之间的区域。我尝试了以下代码:

xfill = \[xaxis, fliplr(xaxis)\];
yfill = \[min(zaxis) \* ones(size(b)), b\];
patch(xfill, yfill, 'r');

代码运行成功,但只填充了b的区域,在b的位置创建了一个三角形,并在最小z轴处创建了一条单独的水平线。我想填充水平线和 b 的图之间的区域。我怎样才能实现这个目标?

我也尝试再次使用补丁功能,但得到了相同的结果。我很确定我错过了一些东西,但我不知道是什么。

我试过了

xfill = \[xaxis, fliplr(xaxis)\];
yfill = \[min(zaxis) \* ones(size(b)), b\];
patch(xfill, yfill, 'r');

我想填充 min(zaxis) 和 b 之间的区域。

matlab patch fill
1个回答
0
投票

我认为您只需要交换

yfill
的串联顺序,因为您希望
b
按原始顺序与
xaxis
对齐,并且可以将
fliplr(xaxis)
与最小
zaxis
值对齐。

xfill = [xaxis, fliplr(xaxis)];
yfill = [b, min(zaxis)*ones(size(b))];
patch(xfill,yfill,'r');

对于一些虚拟示例:

xaxis = linspace(0,10,7301);
zaxis = rand( 1, 1376 ) - 1;
b = sin( xaxis ) + xaxis;
xfill = [xaxis, fliplr(xaxis)];
yfill = [min(zaxis)*ones(size(b)), b];
patch(xfill,yfill,'r');

patch example

© www.soinside.com 2019 - 2024. All rights reserved.