我正在尝试在 MATLAB 中使用 fmincon,但不太确定问题到底出在哪里。我的功能是:
function f = myfun(x4)
f = (C * x4 - d) .^ 2;
end
我这样称呼它:
lb = zeros(3, 1);
x0 = [10; 10; 10];
[x4, fvalx4, exitflagx4, outputx4, lambdax4] = fmincon(@myfun,x0,[],[],[],[],lb,[]);
但是当我运行它时,我得到
???错误使用 ==> mtimes 内部矩阵尺寸必须一致。
但是,我检查了 C 是 112x3,d 是 112x1,x4 根本没有初始化,因为这就是我要解决的问题。如果我创建一个“虚拟”x4,我可以运行 (C * x4 - d) .^ 2 没有问题。
有什么想法吗?我意识到这与使用 lsqr 或使用 lb 为 0 的 lsqlin 相同,这也等同于 lsqnonneg,但这就是重点:我正在尝试以不同的方式验证这些方法的结果。