2016-04-06 29 views
0


這可能是一個非常基本的問題,但我無法爲此找到答案。使用另一個執行一個Matlab文件

我試圖運行有兩個參數傳遞給它的MATLAB代碼:
1的現有MATLAB代碼
2.整數名稱。
這將是我會在命令窗口中Matlab-

>> auto_caller mytest.m 10 

這裏auto_caller是主要的代碼運行命令,它應該執行該文件mytest.m 10倍。

這是我嘗試 -

function [arguments] = auto_caller(filename, iterations) 
    for i = 0 : str2num(iterations) 
     filename 
    end 
end 

但是當我運行它時,輸出就是 -

mytest.m 
mytest.m 
mytest.m 
mytest.m 
mytest.m 
mytest.m 
mytest.m 
mytest.m 
mytest.m 
mytest.m 

有人可以幫我解決這個問題呢?
謝謝,
Shreedhar

回答

2

而不是通過MATLAB的名稱包含函數的源文件,傳遞函數句柄:

auto_caller @mytest 10 

這是同樣的方式,Mathworks公司提供的優化算法接受的目標函數,GUI控件接受事件的回調函數等

0

您可以通過使用eval功能

function runScript(file,n) 
    for i = 1:n 
     eval(strrep(file,'.m','')) 
    end 
end 
+0

「EVAL」對我的作品!事實上,我嘗試了所有的答案,他們都工作。 – shreetodkar

+0

但是,在循環中,我們需要將'n'的值轉換爲數字。 'str2num'。因爲使用'n'是因爲它給我一個錯誤。 – shreetodkar

+0

用你將值傳遞給函數的方式,是的,你需要轉換它。我假設你可以調用函數作爲'runScript('somefile',10)' – MZimmerman6

1

一個簡單的解決方案調用文件:

使用run(scriptname_here)

+1

我永遠不知道有一個運行功能。 +1教我新東西 – MZimmerman6

+1

FWIW,'run'只是'evalin'的包裝,並且不能接受輸入參數。 – excaza

+0

@excaza也很有趣。感謝那些信息。 – MZimmerman6

相關問題