2010-02-20 77 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