MATLAB:在for循环中使用fmincon

时间:2013-02-14 18:49:57

标签: matlab

我是编程新手。我有大约100个数据集,每个数据集有2列。我想将col1数据作为col2数据的幂函数,即

variable(col1) = parameter1 x (variable(col2))^ parameter2

(say a (x^b)). 

现在我想使用优化函数fmincon并获取两个参数的值。我想对所有100个数据集重复这一点,因此希望在for循环中包含这个fmincon,我在其中一次调用一个数据集中的数据。我已尽力而为,我无法做到这一点。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

让我们调用第一列数据集k Xk和第二列Yk(大小为m x 1)。如果我正确理解您的问题,那么对于每个数据集k {XkYk},您正在寻找两个标量 ak和{{ 1}}这样

bk所有元素Yk == ak * Xk.^bk

由于方程/约束多于参数(1..m方程只有两个参数),我们寻求最小二乘解。

从等式的两边取m得到

log

定义新变量log Yk == log ak + bk * log Xk YYk <- log(Yk)我们有XXk <- log(Xk)log ak线性等式 - 此can be solved easily没有bk或其他优化工具。
事实上,如果我们将列向量fmincon附加到所有列的列(即XXk),我们可以用矩阵形式编写我们的系统

XXk(:,2)=1

现在有一些Matlab代码:

XXk * [ b ; log(ak)] == YYk