我是编程新手。我有大约100个数据集,每个数据集有2列。我想将col1数据作为col2数据的幂函数,即
variable(col1) = parameter1 x (variable(col2))^ parameter2
(say a (x^b)).
现在我想使用优化函数fmincon并获取两个参数的值。我想对所有100个数据集重复这一点,因此希望在for循环中包含这个fmincon,我在其中一次调用一个数据集中的数据。我已尽力而为,我无法做到这一点。
有什么建议吗?
答案 0 :(得分:0)
让我们调用第一列数据集k
Xk
和第二列Yk
(大小为m x 1
)。如果我正确理解您的问题,那么对于每个数据集k
{Xk
,Yk
},您正在寻找两个标量 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