2015-11-26 1 views
3

я задал тот же вопрос здесь: Save Matlab figure without plotting it?Сохранить Matlab фигура без построения его, а затем открыть его в ВИДИМОМ состоянии

Но проблема с решением данного есть то, что я не могу открыть сохраненные цифры в видимом состоянии с двойным щелчком. Похоже, команда savefig сохраняет видимое состояние. То же самое с saveas.

h=figure; 
set(h,'Visible','off'); 
savefig('TestExample.fig'); 

b=openfig('TestExample.fig'); 

С помощью этой команды можно увидеть фигуру, но я просто хочу, чтобы дважды щелкнуть и увидеть:

set(b,'Visible','on'); 
+0

Если вы хотите записать двоичный файл в файл фига, я не уверен, как вы можете сохранить состояние какого-либо графического дескриптора, не возвращая это состояние при загрузке. Единственные вещи, которые могут быть разными, - это сами ручки и позиция фигуры ... Не будет ли отображаться фигура только для экономии времени? Или убрать его с экрана? –

+0

@ CST-Link 'openfig' имеет специальную опцию для установки свойства' 'Visible' 'при загрузке. Дополнительные свойства можно изменить, указав «ResizeFcn» для выполнения работы, поскольку я обнаружил, что прочитал некоторые центральные потоки MATLAB! Подробности в ответе ниже. – mikkola

ответ

2

documentation кажется, чтобы пролить некоторый свет на вопрос:

Создайте участок поверхности и сделайте фигуру невидимой. Затем сохраните фигуру в виде файла фигуры MATLAB. Закройте невидимую фигуру.

surf(peaks) 
set(gcf,'Visible','off') 
savefig('MySavedPlot.fig') 
close(gcf) 

Открыть сохраненный рисунок и сделать его видимым на экране.

openfig('MySavedPlot.fig','visible') 

... Однако, к сожалению, это, вероятно, не будет работать при использовании двойного щелчка интерфейс. Проблема обсуждалась также here и потребовала бы изменения поведения по умолчанию openfig. Это есть возможно путем редактирования встроенной функции, но вроде грязный.

Другой обходной путь решения предлагается в комментариях дальше вниз Джесси Хопкинс:

Установите ResizeFcn на рисунке renable видимости. Согласно документации Matlab, и на практике вызывается ResizeFcn, когда создается цифра: set (h, 'ResizeFcn', 'set (gcf,' 'visible' ',' 'on' ')');

Хорошая вещь, этот способ должен работать для установки на нагрузке любой собственности вы можете установить на рисунок ручки загружается.

+0

OP хочет дважды щелкнуть; у него уже была строка кода, чтобы снова открыть фигуру. – Adriaan

+0

@Adriaan Да, только что заметил. Добавлена ​​ссылка на ресурс, обсуждающий проблему. – mikkola