Matlab 克朗的替代方法

Matlab 克朗的替代方法,matlab,Matlab,我正在做一件事。尽管我升级了RAM,预分配了数组,等等,但我在MATLAB中还是有一个内存不足的错误 在MATLAB中是否有另一种方法来()呢?这是我的密码: tempData = kron( Data, walsh); 数据是一个M乘1的矩阵,沃尔什(扩展码)是一个8乘1的矩阵 我的数据由实部和虚部组成,例如:0.000+1.000i或1.000+0.000i双格式。对kron的调用不占用内存。我知道,你的问题看起来很琐碎。但是,您并没有告诉我们什么是M。对于非常大的M值,您只是试图创建一

我正在做一件事。尽管我升级了RAM,预分配了数组,等等,但我在MATLAB中还是有一个内存不足的错误

在MATLAB中是否有另一种方法来()呢?这是我的密码:

tempData = kron( Data, walsh); 
数据
是一个M乘1的矩阵,
沃尔什
(扩展码)是一个8乘1的矩阵


我的数据由实部和虚部组成,例如:
0.000+1.000i
1.000+0.000i
双格式。

对kron的调用不占用内存。我知道,你的问题看起来很琐碎。但是,您并没有告诉我们什么是M。对于非常大的M值,您只是试图创建一个太大的数组,以容纳内存。很容易忘记你的计算机不是无限大或无限快。当我们在所有东西前面看到“giga”时,我们会被宠坏

如果您必须为M的值执行此操作,那么您可能需要64位版本的MATLAB,一旦执行此操作,更多内存将始终有用


另一种选择是使
数据
具有单一精度,前提是您能够承受精度损失。这至少会给你一个额外的系数2。为了提供最好的帮助,我们需要知道M的大小。

M有多大?tempData的大小应该是8*M乘1,对吗?你能使用单一格式吗?转换成单一格式!谢谢记住,如果M的数量级为500万,那么这个kron调用的结果有4e7个元素。作为复数,这将占用6.4e8字节的内存。Matlab需要找到这个数组的连续地址空间。因此,如果内存中有许多其他阵列,一个技巧是尝试使用pack,这有助于减少内存碎片。当然,单件将这个块缩小到1/2,这样就解决了你的问题。还有一件事要考虑的是,如果数据足够稀疏,那么你就应该使用稀疏矩阵。这真的可以节省内存。