2017-03-15 177 views
0

我正在另一個目錄中運行腳本。在Matlab中運行腳本命令

假設我有以下代碼:

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

x = arr(2); 

它給了我下面的錯誤: 未定義功能「改編」類型的輸入參數「雙」。

調試完代碼後,我發現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 

感謝,

+2

您可以確定'腳本'完成在第二次調用'arr'之前運行嗎? – Adiel

+2

您確定在您的腳本中沒有調用'clear'命令嗎?我試圖複製你的問題,但是對於一些虛擬腳本,似乎一切正常,並且在使用'run'命令執行腳本後'arr'不會被清除。 – UJIN

+0

嗨,你能告訴我們你正在執行的完整腳本嗎? – kalmanIsAGameChanger

回答

1

這裏是一個例如,在您的腳本文件中擦除clear命令:

testing.m

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

ScriptFile.m

disp('Hello World'); 

命令窗口

Hello World 

實施x後持有數。

+0

我試過你的例子,並且工作!但我不知道爲什麼我的代碼沒有! – noor

+0

如果我的回答是正確的,請接受它。 –

1

很明顯,腳本內部的所有內容都是我相信的。

至於如何避免:

  1. 簡單地將其刪除。這通常是最簡單和最好的解決方案。
  2. 將文件寫入磁盤,運行腳本,從磁盤加載。你需要一個硬編碼的文件名。
  3. 創建具有持久單元陣列的「data_holding_function」,將數據加載到那裏,然後在腳本之後將其恢復。您可以使該功能執行加載(當您有一些輸入時)和卸載(當您不需要時)。
+0

謝謝,我會試試這個方法 – noor