Вопрос по matlab-figure, matlab – Отключить участки в Matlab

11

У меня есть несколько программ, написанных на Matlab, которые мне нужно запускать несколько раз по ряду причин (отладка, тестирование с разными входами и т. Д.)

Но есть много графиков, которые составляются программами и различными функциями, так что каждый раз, когда я запускаю программу, мне приходится ждать отображения всех графиков, что очень раздражает и отнимает много времени (особенно когда вы работаете с маленьким ноутбуком). После выполнения программы я закрываю ихclose all.

Итак, мой вопрос:

Is there a way to disable all plots/figures/graphs in Matlab? либо в настройках, либо путем выполнения определенного кода, такого какdisable plot а такжеenable plot чтобы убедиться, что никакие цифры не отображаются.

Я знаю, что могу просто просмотреть код и прокомментировать часть прорисовки, но я не хочуforget раскомментировать.

Ваш Ответ

3   ответа
1

но легкая и хорошая привычка - это использовать"on/off parameter", Таким образом, в начале вашего кода вы можете добавить что-то вроде:

DisplayFigure = 1; %1 = display, 0 = no display

После этого добавьте"if DisplayFigure == 1 ... end" для всех ваших команд, связанных с прорисовкой, где команды должны быть внутри оператора if (... выше). Следовательно, вы даже не будете вычислять графики, что сэкономит вам много времени и памяти. Вам просто нужно изменить значение переменной & quot; DisplayFigure & quot; строить или нет цифры.

13

set(gcf,'Visible','off')              % turns current figure "off"
set(0,'DefaultFigureVisible','off');  % all subsequent figures "off"

Второй, если вы поместите его в начале своей программы, может помочь вам. Конечно, он все еще создает графики, что может быть нежелательно из-за проблем со временем вычислений и / или ОЗУ.

Это классическая причина избегать Matlab, когда это возможно. Это способствует плохому программированию. Чтобы правильно решить эту проблему, вы должны создать что-то, что позволит вам «щелкнуть выключателем». на самом высоком уровне вашей программы и контролируйте, показывают ли графики или не показывают. Возможно, он даже имеет градации опции шоу / не показывать, так что вы можете выбрать различные типы графиков, которые отображаются / не отображаются в зависимости от того, какую диагностику вы используете.

В идеале, вы бы хотели, чтобы этот «щелкнул выключателем» создание, чтобы быть классом, который имеет доступ к функциям видимости и графика других объектов. Но поскольку интерактивная объектная ориентация в Matlab настолько обременительна, часто не стоит усилий по разработке такого решения, и большинство людей не думают об этом аспекте дизайна с самого начала своего проекта.

Matlab побудит кого-то решить эту проблему, создав переменные-флаги, такие как «isPlotVisible». или что-то, и создание функций, которые всегда принимают такие флаги. Я согласен, что это плохой дизайн.

То же самое будет работать и в Octave, что примечательно, поскольку построение графиков является одним из способов, которыми Octave обычно отличается от простой функциональности Matlab.
set(0,'DefaultFigureVisible','off'); просто идеально! Это значительно улучшило производительность программы. Это похоже на то, что он тратит больше времени на создание окон для фигур, чем на реальные вычисления. Mesop
@ Li-Aung Yip: Да, спасибо. Так как у меня естьclose all в начале программы все будет хорошо. Mesop
ах, приятно Не знал о них.
@olchauvin: обратите внимание, что EMS подразумевает, что участки еще создаются (& quot;it is still creating the plots, which might be undesirable for computation time and/or RAM issues.& quot;) простойclose allПериодическое выполнение может быть полезным для очистки этих невидимых графиков, если они используют кучу ресурсов.
3

Вы можете запустить matlab из командной строки:

matlab -nojvm

но тогда вы вообще не получите графический интерфейс. В качестве альтернативы вы можете написать файл 'plot.m':

function h = plot(varargin)
  h = [];
end

который ничего не делает. Если это находится в рабочем каталоге (или где-то еще около вершины пути), то plot будет вызывать вашу функцию вместо 'real' apos; сюжет. Вы должны сделать то же самое с любыми другими графическими функциями, которые вы вызываете.

Самый близкий из известных мне способов «выключения построения графиков»; будет папка таких функций, которые вы можете добавить в путь, чтобы отключить построение, и удалить, чтобы включить.

Я видел это. ;)
+1 креативное решение, даже если оно ужасно (НАМЕРЕННО слежка за встроенными в MATLAB?)
да, и еще хуже, так как я недавно отчитал кого-то за то, что дал ответ, который будетmake Doug Hull cry

Похожие вопросы