2013-09-27 29 views
5

Есть ли способ заставить MATLAB запускать определенный кусок кода при каждом запуске скрипта? Например, я хотел бы MATLAB запуститьЗапуск кода «преамбулы» в MATLAB

sprintf('Here we go...') 

как только я нажал на кнопку Run, а затем перейти, чтобы выполнить мой сценарий, так что, если мой сценарий был

i = 1; 
i = i * i; 
display(i) 

Я хотел бы получить

ans = 

Here we go... 


i = 

     1 

PS Я был бы признателен, если бы люди с более высокой репутацией исправили заголовок моего вопроса, чтобы он лучше отражал содержание.

+0

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

+0

@DennisJaheruddin это на самом деле не так ужасно. – StrongBad

+1

Sia, это ваш комментарий «как только я нажму кнопку« Выполнить », что вы имеете в виду, или вы просто означали что-то, что должно выполняться всякий раз, когда выполняется код? Ниже приведены ответы на вопрос о взломе GUI и изменении скриптов. Я думаю, это потому, что мы не уверены, что вы имеете в виду. –

ответ

3

как только я нажал на кнопку Run

Я предполагаю, что вы говорите про кнопку запуска в редакторе. В R2012a появилась функция «Запустить конфигурацию».Конфигурация запуска была связана с конкретным скриптом и включала код, который должен быть выполнен до запуска сценария. Кажется, что глобальная настройка не используется для всех функций. Эта функция, как представляется, была безшовно удалена в R2012b.

В R2013b вы можете выбрать другой сценарий. Предположительно, вы можете взломать editor, чтобы получить текущий файл и использовать собственный сценарий запуска для запуска вашей преамбулы, а затем текущего файла редактора. Это кажется, что много работы не так много возвращения ...

Вы можете создать файл с именем myrun.m

desktop = com.mathworks.mde.desk.MLDesktop.getInstance; 
jEditor = desktop.getGroupContainer('Editor').getTopLevelAncestor; 
title = jEditor.getTitle; 
currentFilename = char(title.replaceFirst('Editor - ','')); 
fprintf('Here we go...'); 
run(currentFilename); 

и это в редакторе под runRun: type code to run типа myrun. Один вы сделаете это, как только он запомнит ваши предпочтения, и вы сможете запустить код через myrun с F5. Он будет помнить ваши предпочтения через перезагрузки.

1

Не уверен, что я получил то, что вы хотите, но вы можете разделить свой файл m на секции кода. Например:

%% Section 1 
sprintf('Here we go...') 

%% Section 2 
i = 1; 
i = i * i; 
display(i) 

%% является разделом. Поместите курсор в соответствующий раздел и на вкладку «Редактор» в разделе «Выполнить» нажмите «Выполнить раздел». (Или нажмите Ctrl + Enter)

see here for more info.

+0

Если вы хотите, чтобы он отображался каждый раз, когда выполнялся определенный фрагмент кода, он должен быть в том же разделе. –

2

способ сделать это будет иметь preamble.m и doThis.m. В preamble.m вы бы это:

sprintf('Here we go...') 

, а затем в doThis.m, вы бы

preamble 
i = 1; 
i = i * i; 
display(i) 

Единственный трюк, чтобы сделать эту работу, чтобы иметь их как на пути, или в тот же каталог.

0

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


Если вы хотите это для многих сценариев без ввода, вы можете создать общую оболочку:

Допустим, вы хотите запустить вещи, как myFun(a,b,c) затем создать оболочку, которая может назвать так:

myWrapper('myFun(a,b,c)')

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


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

+0

Sidenote: Если вы просто хотите, чтобы сообщение подтвердило, что вы правильно нажали, попробуйте ввести что-то вроде '1'. Если вы еще не видите, что он печатается, Matlab все еще работает. –

Смежные вопросы