Краткий ответ: NO
Извините, в опциях нет простого флажка, который позволял бы вам делать это автоматически. Каждый обходной путь потребует от вас немного усилий. Наиболее используемые решения были даны вам в комментариях. Вы можете:
- Использовать
Workspace Browser
- Просто введите имя переменной в консоли
- Выберите строкуВы хотите запустить, но пропустите
;
из выбора, затем нажмите F9
Длинный ответ: Да, но вам это не понравитсяв любом случае ...
Если это действительно важно, есть способ сделать вывод скрипта / функции в консоли при запуске построчно (или кодировать раздел за разделом), но это довольнозамысловатый и требует от вас кодирования такого поведения (это не вариант, предлагаемый MATLAB).
Для этого, когда оно присваивает значение, ваш код должен знать, как оно было вызвано. Это делается путем извлечения трассировки стека. Трассировка стека перечислит все дерево вызовов функций, поэтому:
- , если текущий код был вызван из другой функции => не отображать вывод в консоли
- , если стекдерево пусто, код был выполнен вручную => отобразить вывод в консоли.
Это звучит относительно легко, но реализовать во всех ваших скриптах или функциях будет действительно утомительно. Рассмотрим следующий сценарий: stackTestScript.m
%% stack test script
a = 3 ;
%%
s = dbstack ;
if isempty(s)
b = a.^2
else
b = a.^2 ;
end
Этот сценарий сохранен и в пути. Если я просто наберу stackTestScript
в консоли, скрипт выполнится, в консоли ничего не отобразится, но я смогу увидеть в своем Workspace Browser
( действительно хороший инструмент, вы должны его использовать) что теперь у меня есть переменная b
, имеющая значение 9
=> success.
Теперь, если я выполняю скрипт секция за секцией, когда выполняется вторая секция кода, консольотображает:
b =
9
Это поведение будет работать точно так же в function
. Там нет никакой разницы.
Как видите, он дает желаемый результат, но какой ценой. Вы должны повторить каждое присвоение переменной дважды (одно с ;
и одно без) и заключить это в структуру if/else
с несколькими строками кода. Огромные усилия для одного задания, и вам придется повторить это для каждой интересующей переменной.
Теперь, если вы готовы потерять немного информации, есть способ сделать это менее утомительным. Сделайте пользовательскую функцию для назначения и выполните проверку стека изнутри. Рассмотрим следующую функцию dbAssign.m
:
function [ value_just_assigned ] = dbAssign( in )
s = dbstack ;
if numel(s)<=1
value_just_assigned = in
else
value_just_assigned = in ;
end
Вооружившись этим, теперь вы можете изменить исходный скрипт stackTestScript.m
на:
%% stack test script
a = 3 ;
%%
b = dbAssign( a.^2 ) ;
pfewww, по крайней мере теперь каждое назначение можетпомещается в одну строку (хотя с нетрадиционным синтаксисом). Это прекрасно работает при вызове из другой функции (без отображения), но если мы будем запускать построчно, после выполнения второго блока мы теперь получим в консоли:
value_just_assigned =
9
Вы не сможетезнать имя переменной, которая была назначена, она всегда будет отображаться как value_just_assigned
(или какое бы имя выходного файла вы не указали в dbAssign.m
). Поэтому, если у вас есть несколько инструкций присваивания, вам придется следить за тем, какую строку вы только что выполнили.
Был бы (грязный) способ получить назначенное имя переменной, но только в том случае, если она вызываетсяпо функции, а не в том случае, если вы хотите (код выполняется строка за строкой), так что это нам здесь не поможет.
Итог, текущие инструменты (Workspace Browser
да, опять же) гораздо удобнее, и я бы не стал постоянно использовать какой-либо код, упомянутый выше (кроме как для эксперимента).
Был бы какой-то способ продвинуть этот хак дальше,но они требуют использования семейства функций eval
, которые я, конечно, не буду здесь продвигать (приведенный выше код уже является серьезным хаком, я бы не хотел, чтобы другой (худший) слой сверху.)