запустить команду скрипта в Matlab

Я запускаю скрипт в другом каталоге.

Предположим, у меня есть следующий код:

arr = [10;20;30];
run(script);  % script= path to the script file + scriptfile.mat ..

x = arr(2);

Это дало мне следующую ошибку: Неопределенная функция 'arr' для входных аргументов типа 'double'.

После отладки кода я обнаружил, что run(script) .. запускает скрипт, а затем очищает все переменные .. такие как arr.

Есть ли способ заставить команду запуска не очищать все переменные..

Изменить: ниже приведен исходный код.

xValues =[2;4;6];
yValues =[10;15;20;30;40];

for var1 =1:size(xValues,1)

    results =[];

    for var2 =1: size(yValues,1)

       run(strcat('C:\Users\as\Desktop\study',num2str(xValues(var1)),'folder\',num2str(yValues(var2)),'folder\file1.m'));

       results(var2,1) = yValues(var2);

    end

end

Спасибо,


person userInThisWorld    schedule 15.03.2017    source источник
comment
Вы можете быть уверены, что script закончил работу до второго вызова arr?   -  person Adiel    schedule 15.03.2017
comment
Вы уверены, что команда clear не вызывается внутри вашего скрипта? Я пытался воспроизвести вашу проблему, но с каким-то скриптом-пустышкой вроде все нормально работает и arr не очищается после выполнения скрипта командой run.   -  person UJIN    schedule 15.03.2017
comment
Здравствуйте, можете ли вы показать нам полный сценарий, который вы пытаетесь выполнить?   -  person desmond13    schedule 15.03.2017
comment
@ Adiel да, так как команды также упорядочены в сценарии ..   -  person userInThisWorld    schedule 15.03.2017
comment
@UJIN да, я уверен   -  person userInThisWorld    schedule 15.03.2017
comment
@minidiable Я добавил исходный код ..   -  person userInThisWorld    schedule 15.03.2017
comment
@noor Вопрос в том, что такое код внутри скрипта, а не в том, как вы его выполняете. Также существует вероятность, что этот скрипт не имеет очистки всего, но вызывает другой скрипт, в котором он есть.   -  person Zizy Archer    schedule 16.03.2017


Ответы (2)


Вот пример, стереть команду clear в вашем файле скрипта:

testing.m

arr = [10;20;30];
run('ScriptFile.m')
x = arr(2);

ScriptFile.m

disp('Hello World');

Командное окно

Hello World

После реализации x содержит число 20.

person Konstantinos Monachopoulos    schedule 15.03.2017
comment
Я попробовал ваш пример и работал! но я не знаю, почему мой код этого не делает! - person userInThisWorld; 15.03.2017

Ясно, что все внутри вашего сценария делает беспорядок, я считаю.

Что касается того, как этого избежать:

  1. Просто удалите его. Как правило, это самое простое и лучшее решение.
  2. Записать файл на диск, запустить скрипт, загрузить с диска. Вам нужно жестко заданное имя файла.
  3. Создайте «data_holding_function», который имеет постоянный массив ячеек, вы загружаете туда свои данные, а затем восстанавливаете их после скрипта. Вы можете заставить функцию выполнять как загрузку (когда у вас есть какие-то данные), так и выгрузку (когда у вас их нет).
person Zizy Archer    schedule 15.03.2017
comment
Спасибо, попробую этот метод - person userInThisWorld; 15.03.2017