Re: [討論] 如何不理輸出就繼續執行接下來的程式碼?

看板MATLAB作者 (請拒絕看各新聞台)時間12年前 (2013/10/14 17:49), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/4 (看更多)
各位高手大家好 我想我還是換個方法問會比較清楚 我有兩個函數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
你的b用向量化的方式去算不知道會不會比較快?
10/14 20:03, 1F
文章代碼(AID): #1IMxulTj (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1IMxulTj (MATLAB)