Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]() 可能重复:因此,在当前的MATLAB脚本中,我有一个很大的不确定大小的增长数组。目前,我对此无能为力,因为如果我实际进行预分配,它将需要的内存比需要的多很多倍(最大可能值的数量是每个像素640,但通常是2左右) 5)。 通常在这种情况下,我会在C ++或类似的东西中使用向量,其中向量相对于给定的容量呈指数增长。但是我认为Matlab中的矩阵开始分裂的速度比目标驱动的C ++向量快得多。 你们认为什么是类似这样的最佳选择?还是我应该坚持使用普通数组,并希望依次添加大约100k个元素可以工作? 提前致谢。 回答: 您可以尝试在重新分配元素时std::vector做什么---每次填充时将其容量加倍,摊销成本为O(1) 。 测试: function test_MAT_vector LIM = 5e4; %%# Normal tic; A = zeros(1,1); for i = 1:LIM A(end+1) = i; end toc %%# std::vector clone tic; B = zeros(1,1); for i = 1:LIM if(i > numel(B)) B = [B;zeros(numel(B),1)]; end B(i) = i; end toc end 输出: 经过的时间是3.489820秒。使用细胞 %%# cell tic; A = cell(1,1); for i = 1:LIM A(end+1) = {i}; end toc 经过的时间是2.740792秒。更多&回答... |
![]() |
![]() |