MATLAB拟合矩阵

时间:2017-07-11 06:57:47

标签: matlab curve-fitting function-fitting

我得到案例P(t) = a * A(t) - b* B(t),每个17281x1加倍。

现在我想使用曲线拟合来获取变量ab

Fitting 1

拟合案例,此处a和b为1和1

我知道fitfittype,但在这种情况下它们似乎不起作用。

  

任何想法,如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

使用最小二乘法怎么样?如果我理解正确,你的问题可以表达为 P(t) = [A(t), B(t)] * [a; -b]

允许[a; -b] = x[A(t), B(t)] = YP(t) = P

现在最小二乘解决方案是:

x = ((Y'*Y)^-1)*Y'*P;

在Matlab中,你也可以在这种情况下使用'反斜杠运算符':

x = Y\P;

为此,您可以在此处找到文档:mldivide

作为参考:

Wikipedia

Mathworks

我希望这会有所帮助。

修改

这是我的测试代码:

A = [1;2;3]
B = [4;5;6]
P = [7;8;9]

Y = [A, -B]

disp('------- regular least squares formula -------')
x = ((Y'*Y)^-1)*Y'*P

a = x(1)
b = x(2)

disp('------- mldivide -------')
x = Y\P

a = x(1)
b = x(2)