Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
防止Matlab中的攻击性自动缩放_Matlab_Plot_Scale_Matlab Figure - Fatal编程技术网

防止Matlab中的攻击性自动缩放

防止Matlab中的攻击性自动缩放,matlab,plot,scale,matlab-figure,Matlab,Plot,Scale,Matlab Figure,假设我有以下Matlab代码: figure; a=plot(1:10); %A pause(); set(a,'ydata',1:2:20); %B pause(); set(a,'ydata',1:10); %C 在(A)处,我的绘图的垂直范围为[1,10]。 在(B)处,我的绘图的垂直范围为[0,20]。 在(C)处,垂直范围再次为[1,10] 我喜欢从步骤(A)到步骤(B)的绘图自动缩放。我不喜欢从(B)到(C)的自动缩放-它会让事情跳得太多 有没有一种方法可以将绘图的比例设置为扩展但

假设我有以下Matlab代码:

figure;
a=plot(1:10); %A
pause();
set(a,'ydata',1:2:20); %B
pause();
set(a,'ydata',1:10); %C
在(A)处,我的绘图的垂直范围为[1,10]。
在(B)处,我的绘图的垂直范围为[0,20]。
在(C)处,垂直范围再次为[1,10]

我喜欢从步骤(A)到步骤(B)的绘图自动缩放。我不喜欢从(B)到(C)的自动缩放-它会让事情跳得太多

有没有一种方法可以将绘图的比例设置为扩展但从不收缩

在我看来,这看起来像:

set(gca,'XLimMode','auto_maxever');

据我所知,Matlab没有你描述的功能,但是

通过执行以下命令,可以精确设置
X
Y
的限制:

set(gca,'XLim',[x1 x2], 'YLim',[y1 y2]);
同一命令的快速别名为:

axis([xmin xmax ymin ymax]);
您也可以随时“冻结”限制,方法是将
XLimMode
YLimMode
Auto
更改为
Manual

figure();
a=plot(1:10); %A
pause();
set(a,'ydata',1:2:20); %B
pause();
set(gca,'XLimMode','manual');
set(gca,'YLimMode','manual');
set(a,'ydata',1:10); %C
或者您可以使用另一个别名,其作用与此完全相同:

axis('manual');

如果连续获取数据,请考虑在每次更新之前保存轴限制,然后执行手动缩放。

Hmmm.。理想情况下,我想说:
set(gca,'XLimMode','auto_maxever')
并让它执行我描述的功能:扩展但不收缩。@Richard,您可以在连续获取数据之前计算数据的边界框,@Andrey。@Richard,您可以将其存储在变量中并每次更新。这是我能找到的唯一可行的解决方案,@Andrey,谢谢。