2017-08-11 38 views
0

我有保持在一個while循環運行的兩個功能如何在MATLAB中運行並行函數?

其中之一是「的GetData」,另一種是「data_analysis」

data_analysis需要幾秒鐘的GetData需要幾秒鐘

我需要data_analysis使用最新的可用數據,所以我希望在data_analysis運行時getdata繼續運行。

我已經並行計算工具箱2017A

+0

查看http://mathworks.com/help/distcomp/parfeval.html – Swier

回答

0

您想運行getdata汽車無,每當的getdata一個實例完成後,要運行並行data_analysis,對不對?

然後,您需要在while循環中運行getdata,並請data_analysis在並行池中運行。下面的代碼應該這樣做:

p = gcp(); % builds a parallel pool 
while true 
    getdata(); % continuously runs the getdata function 
    f = parfeval(p, @data_analysis, numOuts, args); % runs the data_analysis function 
               % in the parallel pool 
end 

numOut是由data_analysis供給輸出端的數目。
args是傳遞給data_analysis的參數。

正如Edric指出的:在某些時候,您還需要撥打fetchOutputs,f來檢索結果。

如果data_analysis不返回任何內容,則行parfeval(p, @data_analysis, 0, args);應該足夠。

聲明:我目前無法運行matlab,所以我還沒有測試過。

+0

parfeval調用的正確語法爲:f = parfeval(p,@ data_analysis,numOut,args) ;其中'numOut'是'data_analysis'提供的輸出數量。當然,在某些時候,您還需要在'f'上調用'fetchOutputs'來檢索結果。 – Edric