我如何解决MATLAB耗尽内存?

38视图(30天)
大我Dhruva
大我Dhruva 2022年9月24日
回答: Harshit古普塔 2022年10月3日
在延续我的UAV-LiDAR数据的分析基于林木指标的提取脚本,我调整,我遇到一些内存问题。我一直在阅读大量文档但我似乎无法用我的头。
%段单独的树
label2D = helperSegmentTrees (canopyModel treeTopRowId、treeTopColId minTreeHeight);
%确定各点的行和列id label2D和转移标签
%,每个点
rowId =装天花板(ptCloud.Location (:, 2)——ptCloud.YLimits (1)) / gridRes) + 1;
colId =装天花板((ptCloud.Location (: 1)——ptCloud.XLimits (1)) / gridRes) + 1;
印第安纳州= sub2ind(大小(label2D) rowId colId);
label3D = label2D(印第安纳州);
%提取有效的标签和对应点
validSegIds = label3D ~ = 0;
ptVeg =选择(ptCloud validSegIds);
在运行的 ptVeg =选择(ptCloud validSegIds); 这是MATLAB耗尽内存,并显示以下错误:
内存不足。
pointclouds.internal.pc.getSubset误差
(loc c nv,强度,r) = pointclouds.internal.pc.getSubset (…
(loc c nv,强度,r) =。subsetImpl(指标,outputSize);
veglabel3D = label3D (validSegIds);
%的颜色分配给每个标签
numColors = max (veglabel3D);
colorMap =兰迪([0 255]numColors 3) / 255;
labelColors = label2rgb (veglabel3D colorMap OutputFormat =“三胞胎”);
%可视化树片段
pcshow (ptVeg.Location labelColors)
标题(“个人树片段”)
视图(2)
uicontrol (“可见”,“关闭”)
它也显示了一个类似的错误在运行后续脚本——的一部分
%提取树属性
treeMetrics = helperExtractTreeMetrics (normalizedPoints label3D);
内存不足。
filteredPoints = normalizedPoints (validLabels:);
%显示前5树部分指标
disp(头(treeMetrics));
我的激光雷达数据集是在25 g (colourised点云35公顷的森林站)。
我使用一个图像处理计算机与256字节的内存,一个巨大的硬盘和一个NVIDIA GeForce RTX 3090。
有人能告诉我正确的方向吗?超级感谢Mathworks社区的帮助!:)
附加额外信息下面是截图:

答案(1)

Harshit古普塔
Harshit古普塔 2022年10月3日
根据我的理解,你想找到方法来避免错误” 内存不足 “虽然使用MATLAB。
当你的代码运行在大量数据或不有效地使用内存,MATLAB可能会产生一个错误在回答一个非常大的数组大小,或者它可能会耗尽内存。
请从以下文档URL:内存使用信息
具体来说,对部分:
  1. 策略有效地使用内存
  2. 解决“内存不足“错误
概念:
  1. 内存分配
  2. 内存管理函数
你也可以参考以下链接为解决” 内存不足 “错误:

s manbetx 845


释放

R2022b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!