MATLAB:预分配矩阵产生误差

时间:2010-02-23 08:24:41

标签: matlab

我正在编写一个简单的MATLAB程序来解决project Euler问题。

该程序创建一个900 x 900矩阵。在程序创建此矩阵c之前,我按以下方式预先分配它:

c = zeros(900,900);

这会产生橙色错误消息:“分配给变量'c'的值可能未使用”

在程序的后面,矩阵c充满了数字。那么为什么会出现错误消息?

2 个答案:

答案 0 :(得分:6)

这是一条mlint WARNING消息。不是真正的错误。错误将阻止您的代码运行。 mlint警告仅表明效率低下,这可能是您的代码无法有效编写的。

无需预先分配将重新分配的数组。事实上,你的第一个作业在这里毫无用处。稍后在您的代码中,您将c定义为两个向量的乘积的结果。因此,matlab完全忽略了你在第一步中所做的事情。所以这个陈述确实被浪费了,因此应该放弃。

通常,只预先分配一个数组,稍后您可以在该数组中仅分配该数组的单个元素(或一小组元素)。

答案 1 :(得分:3)

当您说'橙色错误消息'时,您的意思是该消息是否在MATLAB编辑器中?这是M-Lint的输出,它试图捕获遵循语言语法但可能是错误的常见编码“错误”。 c如何填满数字?如果您有类似

的内容
c = zeros(900,900);
....stuff happens...
c = myfunction();

然后即使c返回900x900矩阵,MATLAB也会重新分配myfunction。您是否扫描过代码以确保在初始声明后c没有被覆盖或替换?我有时会看到M-Lint搞砸了,但不常见。