【发布时间】:2012-12-06 12:56:56
【问题描述】:
我在自己的电脑上安装了 Matlab R2012a,在朋友的电脑上安装了 Matlab R2009a(多线程)。因为我的电脑只有 2gb 内存,而我朋友的内存是 128gb 和更好的处理器,所以我决定在我朋友的电脑上执行我的代码。
我使用远程桌面连接程序连接到他的计算机,从 Dropbox 下载了我的代码和数据集并执行了我的代码。但是,即使一个小时过去了,我的代码的执行也没有完成。 (在我的电脑上花了大约 20 分钟,如果你认为我朋友的系统比我的好得多,那应该不到 20 分钟。)然后我又等了几个小时但执行没有完成。
然后,为了了解问题出在哪里,我一步步评估了代码,发现它无法完成以下循环的执行:
l=1;
for n=1:max_t
for m=1:t(1,n).numberofPoints
x_t(l)=t(1,n).matrix(m,1);
y_t(l)=t(1,n).matrix(m,2);
z_t(l)=t(1,n).matrix(m,3);
l=l+1;
end
end
minx = min(x_t(:));
miny = min(y_t(:));
minz = min(z_t(:));
这只是一个简单的循环来获得我在 x,y,z 坐标中的最小点。 (我确信这个循环没有任何问题。它在我的 PC 上成功运行。)我知道我不需要循环来获取结构的最大值和最小值,但我是 MATLAB 新手,并且不太清楚。因此,这对我来说似乎是最简单的选择。
我真的必须能够使用我朋友的电脑,因为我的内存不足以进行进一步的处理。所以我需要解决这个问题。
相同的代码在我的计算机上运行但在我朋友的计算机上运行的原因是什么?
【问题讨论】:
-
“它无法完成以下循环”到底是什么意思?
-
@carlosdc 它没有完成那个for循环的执行?
-
Amadeus:它会启动然后突然停止吗?它没有开始吗?它有进展吗?进步多少?它是否因错误而失败?它会完成一次内循环吗?
-
@carlosdc 我很确定它确实取得了进展。因为当我通过 ctrl+C 停止执行时,很明显数组 x_t 和 y_t 中有元素。它从未突然停止。为了了解内部循环是否完成,我尝试显示一个句子,但没有显示它。
-
我相信“未完成”只是意味着它没有在合理的时间内完成。当您在较新的版本中未能预先分配时,Matlab 减轻了伤害,但在 R2009a 等较旧版本中,如果您在自己的脚上开枪,您将不会再快速浏览您的代码。