我正在编写一个简单的MATLAB程序来解决project Euler问题。
该程序创建一个900 x 900矩阵。在程序创建此矩阵c
之前,我按以下方式预先分配它:
c = zeros(900,900);
这会产生橙色错误消息:“分配给变量'c'的值可能未使用”。
在程序的后面,矩阵c
充满了数字。那么为什么会出现错误消息?
答案 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搞砸了,但不常见。