TL; DR
matlab.graphics.internal.export.exportTo(hAxes, fullpath);
Во всплывающей подсказке этой новой кнопки написано " Export ... ", что поможет нам идентифицировать ее.Копаясь в свойствах панели инструментов осей (struct(hAxes.Toolbar)
), мы можем получить представление о функции, которая вызывается при нажатии кнопки:
hB = struct(struct(hAxes.Toolbar).ButtonGroup).NodeChildren(1);
%{
hB =
ToolbarPushButton (Export...) with properties:
Tooltip: 'Export...'
Icon: 'export'
ButtonPushedFcn: @(e,d)matlab.graphics.internal.export.exportCallback(d.Axes)
%}
, которая, к сожалению, указывает на каталог, полный .p
files:
...\MATLAB\R2019a\toolbox\matlab\graphics\+matlab\+graphics\+internal\+export
... и вынуждает нас продолжать работу методом проб и ошибок.Например, мы можем выбрать случайный файл .p
, имя которого звучит нам правильно, и посмотреть, сможем ли мы обнаружить его API:
>> matlab.graphics.internal.export.exportTo()
Error using matlab.graphics.internal.export.exportTo
Not enough input arguments.
>> matlab.graphics.internal.export.exportTo('')
Error using matlab.graphics.internal.export.exportTo
Not enough input arguments.
>> matlab.graphics.internal.export.exportTo('','')
Error using matlab.graphics.internal.export.ExporterArgumentParser/parseInputParams
'' matches multiple parameter names: 'background', 'destination', 'format', 'handle', 'margins', 'resolution', 'target'. To avoid ambiguity, specify the complete name of the parameter.
Error in matlab.graphics.internal.export.ExporterArgumentParser/processArguments
Error in matlab.graphics.internal.export.Exporter/process
Error in matlab.graphics.internal.export.exportTo
Последнее сообщение об ошибке предоставляет очень интересную информацию, которая позволяет намВозьмем некоторые обоснованные предположения относительно требуемых входных данных:
'background' - probably background color
'destination' - probably where to put the file
'format' - probably what is the file extension
'handle' - probably the axes handle
'margins' - (self explanatory)
'resolution' - (self explanatory)
'target' - ???
После "минимального" набора входных данных, который запрашивается в вопросе, наша следующая попытка:
membrane;
matlab.graphics.internal.export.exportTo('handle', gca, 'destination', 'e:\blabla.png');
... который создает файл в нужном месте, а также возвращает изображение RGB в истинном цвете, которое обрезается так, как мы хотели!
Несмотря на то, что мы закончили, мы можем попытаться еще больше упростить этот вызов функции, основываясь на «соглашении» saveas
, то есть saveas(what, where, ...)
:
matlab.graphics.internal.export.exportTo(gca, 'e:\blabla.png');
...который работает (!), и поэтому он становится нашим методом выбора.