Пользователь matlab знают, что в графическом окне figure имеется инструмент zoom (значки лупы с плюсом и минусом).
Переходя в режим zoom(+) и щелкая мышью на выбранном участке изображения происходит его увеличение, в режиме zoom(-), наоборот - масштаб уменьшается, но появляются невидимые ранее участки изображения. В режиме zoom(-) есть верхний предел, равный размерам просматриваемой картинки. Это не позволяет уменьшать масштаб, если изображение развёрнуто полностью, и скрытых участков нет.
Это вполне разумно, так как уменьшение масштаба носит целью увидеть скрытые за границами участки, а если таковых нет, то в операции нет никакого смысла.
Однако, иногда, из за этого возникают затруднения. Так, например, если изменить изображение не путём стандартного вывода, через функции plot, imshow и т.д., а путём присвоения нового значения графическому примитуву
>>figure.Children(2).Children(end).CData=NewImage;
(это позволяет избежать перерисовки всего содержимого figure, что важно при большом количестве элементов изображения),
то верхние пределы zoom (-) остаются прежними. Из за этого не удаётся полностью развернуть новое изображение с помощью zoom (-), если оно больше прежнего, что весьма неудобно. Хотя другими путями это сделать всё таки можно, например, через изменение свойств XLim, YLim объекта Axes. Вылетевшие за границы обзора участки нового изображения можно так же увидеть, сдвигая его инструментом Pan (такая стилизованная рука, сжимающаяся при нажатии мыши).
Всё же хотелось бы иметь возможность делать это и с помощью zoom. Но я ни как не могу найти, какие свойства Axes для этого нужно изменить.
Может быть кто то знает ответ?