1

有没有一种有效的方法可以在 Matlab 中声明一个非常大的整数矩阵(比如说 40.000.000x10)?如果我这样做:

var=uint8(zeros(40000000,10));

它在命令窗口中运行良好。但是相同的代码在功能上的效果要差得多!如果我在函数的某处执行此操作,它首先会创建一个 40.000.000x10 的双精度矩阵,然后将其转换为 8 位整数矩阵。我希望它从一开始就被创建为整数矩阵,就像在命令窗口中一样。我必须使用更大的矩阵,当它初始化这样的双精度矩阵时,我的 RAM 用完了(尽管如果将矩阵初始化为整数会有足够的内存)。而且我在这里并不需要双打,所有数字都在 0:100 范围内。希望你理解这个问题:D

4

3 回答 3

5

来自:MATLAB:uint8

var = zeroes(40000000,10, 'uint8')
于 2013-06-18T22:47:23.497 回答
0

如果你想有点棘手并节省少量时间,你可以这样分配你的uint8零数组:

var(40000000,10) = uint8(0);

有关此类预分配的一些详细信息,请参见此处。小心这个方案。如果您分配var为一个大小,然后再次分配它而不使用此方法将其清除为较小大小的数组,则大小实际上不会改变,数据也不会被清零。本质上,这个方案只有在数组(var这里)不存在的情况下才有效。

于 2013-06-18T23:11:03.440 回答
0

也许你应该使用这个,它更有效。

var = zeros(40000000, 10, 'uint8');

于 2013-06-18T22:47:21.950 回答