由于我试图将功能与某些实验数据相匹配,我已经编写了一个具有三个输入,三个参数和一个输出的函数:
qrfunc = @(x, p) exp(-1*p(1)*x(:,1) - p(2)*x(:,2))+p(3)*x(:,3)+20;
当我生成一些输入和输出值时:
pS = [0.5; 0.3; 0.3];
x1 = [1 1 1; 1 1.1 1; 1 1.1 1.1; 2 1.2 2];
y1 = qrfunc(x1, pS);
并调用leasqr函数:
pin =[1; 1; 1];
[f1, p1, kvg1, iter1, corp1, covp1, covr1, stdresid1, Z1, r21] = leasqr(x1, y1, pin, qrfunc, 0.0001);
这是正确的,该函数进行7次迭代并提供正确的输出。
但是当我从我的实验数据(一个包含三列,大约1500行的文本文件)以及我的y1(具有相同行数的文本文件)中加载x1并运行相同的函数时,它只生成一个迭代,并不会改变参数。
它甚至表明误差幅度非常高:
sqrt(diag(covp1))
ans =
3.0281e+004
3.7614e+005
1.9477e-002
我做错了什么?没有错误消息,没有“未实现融合”#39;或类似的......
编辑: 数据加载命令:
load "input.txt"
load "output.txt"
装载证明:
size(input)
ans =
1540 3
输入文件中的前几行:
10 0.4 5
20 0.4 5
30 0.4 5
40 0.4 5
50 0.4 5
第二个和第三个参数在线下方具有不同的值。