Re: [討論] 如何不理輸出就繼續執行接下來的程式碼?
各位高手大家好
我想我還是換個方法問會比較清楚
我有兩個函數f及g
它們的輸入及輸出皆為1 by 1的double
n為一個正整數
程式碼概略如下:
a = zeros(1,n);
b = zeros(1,n);
a(1) = pi;
for i = 2:n %迴圈1
a(i) = f(a(i-1));
end
for i = 1:n %迴圈2
b(i) = g(a(i));
end
可以看到迴圈2中b的計算並不需要全部的a(i)都算出來就能開始算了
但如果我把b的計算寫進迴圈1中 那下一個a的計算就要等b算出來才行
但f跟g所需的計算時間都相當久
而且都不會吃掉cpu全部的核心
所以我才在找尋方法讓f跟g可以不用等待
用盡cpu所有的力氣去跑
謝謝大家幫忙
※ 引述《smarter1004 (請拒絕看各新聞台)》之銘言:
: 各位高手大家好
: 現在我有兩個函數f及g
: a(1) = f(a(0)),
: a(i+1) = f(a(i)),
: b(i+1) = g(a(i)),
: 其中i = 1,2,3,...
: 可以看到f需要的變數只有a(i)
: 而b(i)只是g輸出的變數沒有被拿來做其它事
: 我的問題如下
: g需要a才能算b
: 但我不知道f什麼時候才會算出a來
: 如果我在程式碼中寫了算出a(i)後叫g來算b(i+1)
: 那f就只能等b(i+1)算出來後再算a(i+1)
: 可是如前所提 f的變數並不需要b
: 也就是會讓f白等
: 有什麼辦法讓matlab算出a後讓電腦用其它核心去算b而f的部份繼續呢?
: 我的matlab沒有平行運算工具箱
: 謝謝大家幫忙
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.122.140.200
推
10/14 20:03, , 1F
10/14 20:03, 1F
討論串 (同標題文章)