[討論] 大陣列計算問題...已回收

看板MATLAB作者 (AN)時間14年前 (2011/10/07 20:11), 編輯推噓3(309)
留言12則, 2人參與, 最新討論串1/1
請問板上的強者, 我的程式碼大約像如下: H是6次方array A = reshape(H, 1, N1*N2*N3*N4*N5*N6); N1~N6是之前積分運算分割的參數。 我想對A裡的每一個數值做Lorenztian Lineshape: 如果不知道Lorenztian Lineshape,如下, http://mathworld.wolfram.com/LorentzianFunction.html x = linspace(3400,3600,1e3);(數值我確定都會落在這區間內) w = 0.75 (這是lorenztian linewidth) for i = 1:N1*N2*N3*N4*N5*N6 (x-A(i))./(((x-A(i)).^2+w^2).^2); end 大概是這樣,其他還有一些加減乘除運算我沒放, 現在問題是如果 N1~N6若大,這個迴圈會變很慢, 但是我想了很久,想不出來有向量化的方法... 其他像是bsxfun等function也用過也沒比較快... 有人可以提點我一下嗎? 我問過指導教授,他說Matlab不適合做大數據運算,叫我可能要嘗試用其他語言, 請問是這樣嗎?那樣我就要學其他語言了... 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.44.41

10/07 20:26, , 1F
1. N1*N2*...*N6=? 2. 64-bit matlab? 3. Your memory size?
10/07 20:26, 1F

10/07 20:27, , 2F
4. 應該可以向量化,若不可行,可試改成mex file
10/07 20:27, 2F

10/07 20:28, , 3F
5. 推同校XD
10/07 20:28, 3F

10/07 20:42, , 4F
N1~N6是我前面算一些參數用來作積分的數
10/07 20:42, 4F

10/07 20:42, , 5F
6. 44是什麼系呢??
10/07 20:42, 5F

10/07 20:43, , 6F
化學
10/07 20:43, 6F

10/07 20:44, , 7F
memory size還是default值,目前我用了一些方法,
10/07 20:44, 7F

10/07 20:44, , 8F
所以還沒有out of memory的問題
10/07 20:44, 8F

10/07 20:45, , 9F
我想調整memory size應該對於計算速度幫助不大
10/07 20:45, 9F

10/07 20:46, , 10F
實際的程式碼有三百多行,這是計算速度最慢的地方
10/07 20:46, 10F

10/07 20:47, , 11F
mex file我沒用過,我試試看,謝謝
10/07 20:47, 11F
※ 編輯: anjackie 來自: 140.114.44.41 (10/07 20:54)

10/07 22:23, , 12F
請把code寄給我,我試看看能不能向量化運算~~
10/07 22:23, 12F
文章代碼(AID): #1EZknnWu (MATLAB)