问题场景及描述:
在matlab中用syms定义一个多维的符号变量后,再利用循环进行赋值时警告未预分配内存。
例如:在求解多元非线性方程组时,需要用syms来创建符号变量来装载方程,当方程组个数可变或可选时,在赋值时也必须与个数相同。
在如下例子中,解释器会产生橙色警告,说‘f’会随迭代数而变化,请预分配内存,但在syms f [1,4]中不是已经分配过了吗?虽然警告并不影响使用,但作为一个被迫强迫症患者,消除警告势在必行。
syms x y
syms f [1,4]
for i = 1:4
f(i) = x^i+y;
end
原因分析:
用whos查看内存分配情况
可见f和f1,f2等都是8个字节,说明f和f1,f2,f3,f4并不是一个包含关系,
解决方案:
可见警告消失了。
依旧可行,GG!