Отключить участки в Matlab

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

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

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

Есть ли способ отключить все графики/рисунки/графики в Matlab? либо в параметрах, либо путем выполнения определенного кода, например disable plot и enable plot, чтобы гарантировать отсутствие цифр отображается.

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

Ответ 1

Попробуйте выполнить комбинацию из двух команд:

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

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

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

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

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

Ответ 2

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

matlab -nojvm

но тогда вы не получите GUI вообще. Кроме того, вы можете написать файл "plot.m":

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

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

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

Ответ 3

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

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

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