2010-02-20 74 views
2

我在做CDMA傳播MATLAB。而且我在MATLAB中出現了內存不足錯誤,儘管升級了我的RAM,預分配了陣列等。kron的替代方法

在MATLAB中是否有另一種方法可用於kronKronecker tensor product)?這是我的代碼:

tempData = kron(Data, walsh); 

Data是由1點矩陣和walsh(擴頻碼)一個M是8由1矩陣。我的數據由實部和虛部組成,例如:0.000 + 1.000i1.000 + 0.000i雙格式。

+1

M有多大? tempData的大小應該是8 * M乘1,對嗎?你可以使用單一格式嗎? – yuk 2010-02-20 14:28:21

+0

轉換爲單曲作品!謝謝! – 2010-02-20 14:41:51

回答

3

這個對kron的調用不是內存密集型的。我知道,你的問題似乎很微不足道。但是,你不告訴我們什麼是M.對於非常大的M值,你只是試圖創建一個太大的數組來適應內存。很容易忘記你的電腦不是無限大或無限快。當我們在任何事物的前面看到「千兆」時,我們都會被寵壞。

如果你絕對必須這樣做的M值,那麼你可能需要64位版本的MATLAB,並且一旦你這樣做,更多的內存將永遠有幫助。

另一種選擇是使單精度,如果你能承受精度損失。這至少會給你一個額外的因子2.爲了提供最好的幫助,我們需要知道M.的大小。

+0

好吧,我會去嘗試單一的格式... M是在百萬 – 2010-02-20 14:38:08

+1

轉換爲單件作品!謝謝! – 2010-02-20 14:42:26

+1

請記住,如果M的數量是500萬,那麼這個kron調用的結果就有4e7個元素。作爲複數,這將需要6.4e8字節的內存。 Matlab需要爲這個數組找到連續的地址空間。所以如果你在內存中有很多其他的數組,一個技巧就是嘗試打包,這有助於減少內存碎片。當然,單個減少的塊大到1/2,所以它解決了你的問題。 – 2010-02-20 15:15:10